Created a base CanvasGroupFader component to handle GUI object fading.
Created a base CanvasGroupFader component to handle GUI object fading.

file:a/.gitignore -> file:b/.gitignore
# Build Folders (you can keep bin if you'd like, to store dlls and pdbs) # Build Folders (you can keep bin if you'd like, to store dlls and pdbs)
[Bb]in/ [Bb]in/
[Oo]bj/ [Oo]bj/
   
  # Unity specific
  [Ll]ibrary/
  [Tt]emp/
  *.unityproj
   
# mstest test results # mstest test results
TestResults TestResults
   
## Ignore Visual Studio temporary files, build results, and ## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons. ## files generated by popular Visual Studio add-ons.
   
# User-specific files # User-specific files
*.suo *.suo
*.user *.user
*.sln.docstates *.sln.docstates
   
# Build results # Build results
[Dd]ebug/ [Dd]ebug/
x64/ x64/
*_i.c *_i.c
*_p.c *_p.c
*.ilk *.ilk
*.meta *.meta
*.obj *.obj
*.pch *.pch
*.pdb *.pdb
*.pgc *.pgc
*.pgd *.pgd
*.rsp *.rsp
*.sbr *.sbr
*.tlb *.tlb
*.tli *.tli
*.tlh *.tlh
*.tmp *.tmp
*.log *.log
*.vspscc *.vspscc
*.vssscc *.vssscc
.builds .builds
   
# Visual C++ cache files # Visual C++ cache files
ipch/ ipch/
*.aps *.aps
*.ncb *.ncb
*.opensdf *.opensdf
*.sdf *.sdf
   
# Visual Studio profiler # Visual Studio profiler
*.psess *.psess
*.vsp *.vsp
*.vspx *.vspx
   
# Guidance Automation Toolkit # Guidance Automation Toolkit
*.gpState *.gpState
   
# ReSharper is a .NET coding add-in # ReSharper is a .NET coding add-in
_ReSharper* _ReSharper*
   
# Mindbench SASS cache # Mindbench SASS cache
.sass-cache/ .sass-cache/
   
# NCrunch # NCrunch
*.ncrunch* *.ncrunch*
.*crunch*.local.xml .*crunch*.local.xml
   
# Installshield output folder # Installshield output folder
[Ee]xpress [Ee]xpress
   
# DocProject is a documentation generator add-in # DocProject is a documentation generator add-in
DocProject/buildhelp/ DocProject/buildhelp/
DocProject/Help/*.HxT DocProject/Help/*.HxT
DocProject/Help/*.HxC DocProject/Help/*.HxC
DocProject/Help/*.hhc DocProject/Help/*.hhc
DocProject/Help/*.hhk DocProject/Help/*.hhk
DocProject/Help/*.hhp DocProject/Help/*.hhp
DocProject/Help/Html2 DocProject/Help/Html2
DocProject/Help/html DocProject/Help/html
   
# Click-Once directory # Click-Once directory
publish publish
   
# Publish Web Output # Publish Web Output
*.Publish.xml *.Publish.xml
   
# NuGet Packages Directory # NuGet Packages Directory
packages packages
   
# Windows Azure Build Output # Windows Azure Build Output
csx csx
*.build.csdef *.build.csdef
   
# Windows Store app package directory # Windows Store app package directory
AppPackages/ AppPackages/
   
# Others # Others
sql sql
TestResults TestResults
[Tt]est[Rr]esult* [Tt]est[Rr]esult*
*.Cache *.Cache
ClientBin ClientBin
[Ss]tyle[Cc]op.* [Ss]tyle[Cc]op.*
~$* ~$*
*.dbmdl *.dbmdl
Generated_Code #added for RIA/Silverlight projects Generated_Code #added for RIA/Silverlight projects
   
# Backup & report files from converting an old project file to a newer # Backup & report files from converting an old project file to a newer
# Visual Studio version. Backup files are not needed, because we have git ;-) # Visual Studio version. Backup files are not needed, because we have git ;-)
_UpgradeReport_Files/ _UpgradeReport_Files/
Backup*/ Backup*/
UpgradeLog*.XML UpgradeLog*.XML
   
# SQL Server files # SQL Server files
App_Data/*.mdf App_Data/*.mdf
App_Data/*.ldf App_Data/*.ldf
   
[Gg]ame/ [Gg]ame/
[Rr]elease/ [Rr]elease/
file:a/Assets/CurseLogo.png (deleted)
 Binary files a/Assets/CurseLogo.png and /dev/null differ
file:a/Assets/CurseLogo.psd (deleted)
 Binary files a/Assets/CurseLogo.psd and /dev/null differ
 Binary files a/Assets/DropDownBackground.psd and /dev/null differ
 Binary files /dev/null and b/Assets/Images/app-launcher-icon.psd differ
 Binary files /dev/null and b/Assets/Images/flight-menu-background.psd differ
 Binary files /dev/null and b/Assets/Images/ui-drop-down.psd differ
 Binary files /dev/null and b/Assets/Plugins/KerbalEngineer.Unity.dll differ
  %YAML 1.1
  %TAG !u! tag:unity3d.com,2011:
  --- !u!1 &116014
  GameObject:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  serializedVersion: 4
  m_Component:
  - 224: {fileID: 22475412}
  - 222: {fileID: 22223226}
  - 114: {fileID: 11409704}
  - 114: {fileID: 11424646}
  m_Layer: 5
  m_Name: Content
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
  --- !u!1 &122098
  GameObject:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  serializedVersion: 4
  m_Component:
  - 224: {fileID: 22401100}
  - 222: {fileID: 22201528}
  - 114: {fileID: 11404586}
  - 114: {fileID: 11496484}
  - 114: {fileID: 11461688}
  m_Layer: 5
  m_Name: ControlBar
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
  --- !u!1 &126098
  GameObject:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  serializedVersion: 4
  m_Component:
  - 224: {fileID: 22476196}
  - 222: {fileID: 22270862}
  - 114: {fileID: 11423044}
  - 114: {fileID: 11485532}
  m_Layer: 5
  m_Name: flight-menu
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
  --- !u!1 &133376
  GameObject:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  serializedVersion: 4
  m_Component:
  - 224: {fileID: 22478174}
  - 114: {fileID: 11443382}
  m_Layer: 5
  m_Name: TopControls
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
  --- !u!1 &137786
  GameObject:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  serializedVersion: 4
  m_Component:
  - 224: {fileID: 22444606}
  - 222: {fileID: 22267348}
  - 114: {fileID: 11465882}
  m_Layer: 5
  m_Name: Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
  --- !u!1 &138760
  GameObject:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  serializedVersion: 4
  m_Component:
  - 224: {fileID: 22409936}
  - 222: {fileID: 22255938}
  - 114: {fileID: 11403342}
  m_Layer: 5
  m_Name: Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
  --- !u!1 &156848
  GameObject:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  serializedVersion: 4
  m_Component:
  - 224: {fileID: 22483410}
  - 222: {fileID: 22267572}
  - 114: {fileID: 11463504}
  - 114: {fileID: 11453198}
  m_Layer: 5
  m_Name: Titlebar
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
  --- !u!1 &172308
  GameObject:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  serializedVersion: 4
  m_Component:
  - 224: {fileID: 22401786}
  - 222: {fileID: 22247322}
  - 114: {fileID: 11439582}
  m_Layer: 5
  m_Name: Text
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
  --- !u!1 &194088
  GameObject:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  serializedVersion: 4
  m_Component:
  - 224: {fileID: 22469574}
  - 222: {fileID: 22281674}
  - 114: {fileID: 11498756}
  - 114: {fileID: 11454510}
  - 114: {fileID: 11451984}
  m_Layer: 5
  m_Name: ShowEngineer
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
  --- !u!114 &11403342
  MonoBehaviour:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 138760}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_Material: {fileID: 0}
  m_Color: {r: 0, g: 0, b: 0, a: 1}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
  m_PersistentCalls:
  m_Calls: []
  m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
  Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
  m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
  m_FontSize: 12
  m_FontStyle: 1
  m_BestFit: 0
  m_MinSize: 10
  m_MaxSize: 40
  m_Alignment: 4
  m_RichText: 1
  m_HorizontalOverflow: 0
  m_VerticalOverflow: 0
  m_LineSpacing: 1
  m_Text: SHOW ENGINEER
  --- !u!114 &11404586
  MonoBehaviour:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 122098}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_Material: {fileID: 0}
  m_Color: {r: .800000072, g: 1, b: 0, a: 1}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
  m_PersistentCalls:
  m_Calls: []
  m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
  Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
  m_Type: 1
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  --- !u!114 &11409704
  MonoBehaviour:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 116014}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_Material: {fileID: 0}
  m_Color: {r: .313725501, g: .313725501, b: .313725501, a: .70588237}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
  m_PersistentCalls:
  m_Calls: []
  m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
  Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 0}
  m_Type: 1
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  --- !u!114 &11423044
  MonoBehaviour:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 126098}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 1741964061, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_HorizontalFit: 0
  m_VerticalFit: 2
  --- !u!114 &11424646
  MonoBehaviour:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 116014}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_Padding:
  m_Left: 0
  m_Right: 0
  m_Top: 0
  m_Bottom: 0
  m_ChildAlignment: 0
  m_Spacing: 0
  m_ChildForceExpandWidth: 1
  m_ChildForceExpandHeight: 0
  --- !u!114 &11439582
  MonoBehaviour:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 172308}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_Material: {fileID: 0}
  m_Color: {r: .800000072, g: 1, b: 0, a: 1}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
  m_PersistentCalls:
  m_Calls: []
  m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
  Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
  m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
  m_FontSize: 12
  m_FontStyle: 1
  m_BestFit: 0
  m_MinSize: 10
  m_MaxSize: 40
  m_Alignment: 3
  m_RichText: 1
  m_HorizontalOverflow: 0
  m_VerticalOverflow: 0
  m_LineSpacing: 1
  m_Text: FLIGHT ENGINEER
  --- !u!114 &11443382
  MonoBehaviour:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 133376}
  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: 25
  m_FlexibleWidth: -1
  m_FlexibleHeight: -1
  --- !u!114 &11451984
  MonoBehaviour:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 194088}
  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: 20
  m_FlexibleWidth: -1
  m_FlexibleHeight: -1
  --- !u!114 &11453198
  MonoBehaviour:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 156848}
  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: 20
  m_FlexibleWidth: -1
  m_FlexibleHeight: -1
  --- !u!114 &11454510
  MonoBehaviour:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 194088}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_Navigation:
  m_Mode: 3
  m_SelectOnUp: {fileID: 0}
  m_SelectOnDown: {fileID: 0}
  m_SelectOnLeft: {fileID: 0}
  m_SelectOnRight: {fileID: 0}
  m_Transition: 1
  m_Colors:
  m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
  m_HighlightedColor: {r: .960784316, g: .960784316, b: .960784316, a: 1}
  m_PressedColor: {r: .784313738, g: .784313738, b: .784313738, a: 1}
  m_DisabledColor: {r: .784313738, g: .784313738, b: .784313738, a: .501960814}
  m_ColorMultiplier: 1
  m_FadeDuration: .100000001
  m_SpriteState:
  m_HighlightedSprite: {fileID: 0}
  m_PressedSprite: {fileID: 0}
  m_DisabledSprite: {fileID: 0}
  m_AnimationTriggers:
  m_NormalTrigger: Normal
  m_HighlightedTrigger: Highlighted
  m_PressedTrigger: Pressed
  m_DisabledTrigger: Disabled
  m_Interactable: 1
  m_TargetGraphic: {fileID: 11498756}
  m_OnClick:
  m_PersistentCalls:
  m_Calls: []
  m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0,
  Culture=neutral, PublicKeyToken=null
  --- !u!114 &11461688
  MonoBehaviour:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 122098}
  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: 20
  m_FlexibleWidth: -1
  m_FlexibleHeight: -1
  --- !u!114 &11463504
  MonoBehaviour:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 156848}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_Material: {fileID: 0}
  m_Color: {r: .183823526, g: .183823526, b: .183823526, a: .90196079}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
  m_PersistentCalls:
  m_Calls: []
  m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
  Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 0}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  --- !u!114 &11465882
  MonoBehaviour:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 137786}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_Material: {fileID: 0}
  m_Color: {r: 0, g: 0, b: 0, a: 1}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
  m_PersistentCalls:
  m_Calls: []
  m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
  Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_FontData:
  m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
  m_FontSize: 12
  m_FontStyle: 1
  m_BestFit: 0
  m_MinSize: 10
  m_MaxSize: 40
  m_Alignment: 4
  m_RichText: 1
  m_HorizontalOverflow: 0
  m_VerticalOverflow: 0
  m_LineSpacing: 1
  m_Text: CONTROL BAR
  --- !u!114 &11485532
  MonoBehaviour:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 126098}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_Padding:
  m_Left: 0
  m_Right: 0
  m_Top: 0
  m_Bottom: 0
  m_ChildAlignment: 0
  m_Spacing: 0
  m_ChildForceExpandWidth: 1
  m_ChildForceExpandHeight: 1
  --- !u!114 &11496484
  MonoBehaviour:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 122098}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_Navigation:
  m_Mode: 3
  m_SelectOnUp: {fileID: 0}
  m_SelectOnDown: {fileID: 0}
  m_SelectOnLeft: {fileID: 0}
  m_SelectOnRight: {fileID: 0}
  m_Transition: 1
  m_Colors:
  m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
  m_HighlightedColor: {r: .960784316, g: .960784316, b: .960784316, a: 1}
  m_PressedColor: {r: .784313738, g: .784313738, b: .784313738, a: 1}
  m_DisabledColor: {r: .784313738, g: .784313738, b: .784313738, a: .501960814}
  m_ColorMultiplier: 1
  m_FadeDuration: .100000001
  m_SpriteState:
  m_HighlightedSprite: {fileID: 0}
  m_PressedSprite: {fileID: 0}
  m_DisabledSprite: {fileID: 0}
  m_AnimationTriggers:
  m_NormalTrigger: Normal
  m_HighlightedTrigger: Highlighted
  m_PressedTrigger: Pressed
  m_DisabledTrigger: Disabled
  m_Interactable: 1
  m_TargetGraphic: {fileID: 11404586}
  m_OnClick:
  m_PersistentCalls:
  m_Calls: []
  m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0,
  Culture=neutral, PublicKeyToken=null
  --- !u!114 &11498756
  MonoBehaviour:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 194088}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_Material: {fileID: 0}
  m_Color: {r: .800000072, g: 1, b: 0, a: 1}
  m_RaycastTarget: 1
  m_OnCullStateChanged:
  m_PersistentCalls:
  m_Calls: []
  m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
  Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
  m_Type: 1
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  --- !u!222 &22201528
  CanvasRenderer:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 122098}
  --- !u!222 &22223226
  CanvasRenderer:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 116014}
  --- !u!222 &22247322
  CanvasRenderer:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 172308}
  --- !u!222 &22255938
  CanvasRenderer:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 138760}
  --- !u!222 &22267348
  CanvasRenderer:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 137786}
  --- !u!222 &22267572
  CanvasRenderer:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 156848}
  --- !u!222 &22270862
  CanvasRenderer:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 126098}
  --- !u!222 &22281674
  CanvasRenderer:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 194088}
  --- !u!224 &22401100
  RectTransform:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 122098}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22444606}
  m_Father: {fileID: 22478174}
  m_RootOrder: 1
  m_AnchorMin: {x: .5, y: 0}
  m_AnchorMax: {x: 1, y: 1}
  m_AnchoredPosition: {x: -.5, y: 0}
  m_SizeDelta: {x: -3, y: -4}
  m_Pivot: {x: .5, y: .5}
  --- !u!224 &22401786
  RectTransform:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 172308}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22483410}
  m_RootOrder: 0
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 1, y: 1}
  m_AnchoredPosition: {x: 2.5, y: 0}
  m_SizeDelta: {x: -5, y: 0}
  m_Pivot: {x: .5, y: .5}
  --- !u!224 &22409936
  RectTransform:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 138760}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22469574}
  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_Pivot: {x: .5, y: .5}
  --- !u!224 &22444606
  RectTransform:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 137786}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 22401100}
  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_Pivot: {x: .5, y: .5}
  --- !u!224 &22469574
  RectTransform:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 194088}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22409936}
  m_Father: {fileID: 22478174}
  m_RootOrder: 0
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: .5, y: 1}
  m_AnchoredPosition: {x: .5, y: 0}
  m_SizeDelta: {x: -3, y: -4}
  m_Pivot: {x: .5, y: .5}
  --- !u!224 &22475412
  RectTransform:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 116014}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22478174}
  m_Father: {fileID: 22476196}
  m_RootOrder: 1
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 0, y: 0}
  m_Pivot: {x: .5, y: .5}
  --- !u!224 &22476196
  RectTransform:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 126098}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22483410}
  - {fileID: 22475412}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_AnchorMin: {x: .5, y: .5}
  m_AnchorMax: {x: .5, y: .5}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 250, y: 0}
  m_Pivot: {x: 1, y: 0}
  --- !u!224 &22478174
  RectTransform:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 133376}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22469574}
  - {fileID: 22401100}
  m_Father: {fileID: 22475412}
  m_RootOrder: 0
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 0, y: 0}
  m_Pivot: {x: .5, y: .5}
  --- !u!224 &22483410
  RectTransform:
  m_ObjectHideFlags: 1
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 100100000}
  m_GameObject: {fileID: 156848}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 22401786}
  m_Father: {fileID: 22476196}
  m_RootOrder: 0
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 0, y: 0}
  m_Pivot: {x: .5, y: 1}
  --- !u!1001 &100100000
  Prefab:
  m_ObjectHideFlags: 1
  serializedVersion: 2
  m_Modification:
  m_TransformParent: {fileID: 0}
  m_Modifications: []
  m_RemovedComponents: []
  m_ParentPrefab: {fileID: 0}
  m_RootGameObject: {fileID: 126098}
  m_IsPrefabParent: 1
 
  %YAML 1.1
  %TAG !u! tag:unity3d.com,2011:
  --- !u!29 &1
  SceneSettings:
  m_ObjectHideFlags: 0
  m_PVSData:
  m_PVSObjectsArray: []
  m_PVSPortalsArray: []
  m_OcclusionBakeSettings:
  smallestOccluder: 5
  smallestHole: .25
  backfaceThreshold: 100
  --- !u!104 &2
  RenderSettings:
  m_ObjectHideFlags: 0
  serializedVersion: 6
  m_Fog: 0
  m_FogColor: {r: .5, g: .5, b: .5, a: 1}
  m_FogMode: 3
  m_FogDensity: .00999999978
  m_LinearFogStart: 0
  m_LinearFogEnd: 300
  m_AmbientSkyColor: {r: .211999997, g: .226999998, b: .259000003, a: 1}
  m_AmbientEquatorColor: {r: .114, g: .125, b: .133000001, a: 1}
  m_AmbientGroundColor: {r: .0469999984, g: .0430000015, b: .0350000001, a: 1}
  m_AmbientIntensity: 1
  m_AmbientMode: 3
  m_SkyboxMaterial: {fileID: 0}
  m_HaloStrength: .5
  m_FlareStrength: 1
  m_FlareFadeSpeed: 3
  m_HaloTexture: {fileID: 0}
  m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
  m_DefaultReflectionMode: 0
  m_DefaultReflectionResolution: 128
  m_ReflectionBounces: 1
  m_ReflectionIntensity: 1
  m_CustomReflection: {fileID: 0}
  m_Sun: {fileID: 0}
  --- !u!157 &3
  LightmapSettings:
  m_ObjectHideFlags: 0
  serializedVersion: 5
  m_GIWorkflowMode: 1
  m_LightmapsMode: 1
  m_GISettings:
  serializedVersion: 2
  m_BounceScale: 1
  m_IndirectOutputScale: 1
  m_AlbedoBoost: 1
  m_TemporalCoherenceThreshold: 1
  m_EnvironmentLightingMode: 0
  m_EnableBakedLightmaps: 0
  m_EnableRealtimeLightmaps: 0
  m_LightmapEditorSettings:
  serializedVersion: 3
  m_Resolution: 2
  m_BakeResolution: 40
  m_TextureWidth: 1024
  m_TextureHeight: 1024
  m_AOMaxDistance: 1
  m_Padding: 2
  m_CompAOExponent: 0
  m_LightmapParameters: {fileID: 0}
  m_TextureCompression: 1
  m_FinalGather: 0
  m_FinalGatherRayCount: 1024
  m_ReflectionCompression: 2
  m_LightmapSnapshot: {fileID: 0}
  m_RuntimeCPUUsage: 25
  --- !u!196 &4
  NavMeshSettings:
  serializedVersion: 2
  m_ObjectHideFlags: 0
  m_BuildSettings:
  serializedVersion: 2
  agentRadius: .5
  agentHeight: 2
  agentSlope: 45
  agentClimb: .400000006
  ledgeDropHeight: 0
  maxJumpAcrossDistance: 0
  accuratePlacement: 0
  minRegionArea: 2
  cellSize: .166666672
  manualCellSize: 0
  m_NavMeshData: {fileID: 0}
  --- !u!1 &476101859
  GameObject:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 0}
  serializedVersion: 4
  m_Component:
  - 224: {fileID: 476101860}
  - 222: {fileID: 476101862}
  - 114: {fileID: 476101861}
  m_Layer: 5
  m_Name: Background-Flight
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
  --- !u!224 &476101860
  RectTransform:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 0}
  m_GameObject: {fileID: 476101859}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 1866791882}
  m_RootOrder: 1
  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_Pivot: {x: .5, y: .5}
  --- !u!114 &476101861
  MonoBehaviour:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 0}
  m_GameObject: {fileID: 476101859}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
  m_PersistentCalls:
  m_Calls: []
  m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
  Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: 0115c816d260a0947976c8ea804febbc, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  --- !u!222 &476101862
  CanvasRenderer:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 0}
  m_GameObject: {fileID: 476101859}
  --- !u!224 &1026898450 stripped
  RectTransform:
  m_PrefabParentObject: {fileID: 22476196, guid: a41f85cb0b8964f43947e85b3e833c0f,
  type: 2}
  m_PrefabInternal: {fileID: 1995265978}
  --- !u!1 &1398276586
  GameObject:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 0}
  serializedVersion: 4
  m_Component:
  - 4: {fileID: 1398276590}
  - 114: {fileID: 1398276589}
  - 114: {fileID: 1398276588}
  - 114: {fileID: 1398276587}
  m_Layer: 0
  m_Name: EventSystem
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
  --- !u!114 &1398276587
  MonoBehaviour:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 0}
  m_GameObject: {fileID: 1398276586}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 1997211142, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_ForceModuleActive: 0
  --- !u!114 &1398276588
  MonoBehaviour:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 0}
  m_GameObject: {fileID: 1398276586}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 1077351063, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_HorizontalAxis: Horizontal
  m_VerticalAxis: Vertical
  m_SubmitButton: Submit
  m_CancelButton: Cancel
  m_InputActionsPerSecond: 10
  m_RepeatDelay: .5
  m_ForceModuleActive: 0
  --- !u!114 &1398276589
  MonoBehaviour:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 0}
  m_GameObject: {fileID: 1398276586}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: -619905303, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_FirstSelected: {fileID: 0}
  m_sendNavigationEvents: 1
  m_DragThreshold: 5
  --- !u!4 &1398276590
  Transform:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 0}
  m_GameObject: {fileID: 1398276586}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 0}
  m_RootOrder: 2
  --- !u!1 &1866791878
  GameObject:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 0}
  serializedVersion: 4
  m_Component:
  - 224: {fileID: 1866791882}
  - 223: {fileID: 1866791881}
  - 114: {fileID: 1866791880}
  - 114: {fileID: 1866791879}
  m_Layer: 5
  m_Name: Canvas
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
  --- !u!114 &1866791879
  MonoBehaviour:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 0}
  m_GameObject: {fileID: 1866791878}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_IgnoreReversedGraphics: 1
  m_BlockingObjects: 0
  m_BlockingMask:
  serializedVersion: 2
  m_Bits: 4294967295
  --- !u!114 &1866791880
  MonoBehaviour:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 0}
  m_GameObject: {fileID: 1866791878}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_UiScaleMode: 0
  m_ReferencePixelsPerUnit: 100
  m_ScaleFactor: 1
  m_ReferenceResolution: {x: 800, y: 600}
  m_ScreenMatchMode: 0
  m_MatchWidthOrHeight: 0
  m_PhysicalUnit: 3
  m_FallbackScreenDPI: 96
  m_DefaultSpriteDPI: 96
  m_DynamicPixelsPerUnit: 1
  --- !u!223 &1866791881
  Canvas:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 0}
  m_GameObject: {fileID: 1866791878}
  m_Enabled: 1
  serializedVersion: 2
  m_RenderMode: 0
  m_Camera: {fileID: 0}
  m_PlaneDistance: 100
  m_PixelPerfect: 0
  m_ReceivesEvents: 1
  m_OverrideSorting: 0
  m_OverridePixelPerfect: 0
  m_SortingLayerID: 0
  m_SortingOrder: 0
  --- !u!224 &1866791882
  RectTransform:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 0}
  m_GameObject: {fileID: 1866791878}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 0, y: 0, z: 0}
  m_Children:
  - {fileID: 2037475081}
  - {fileID: 476101860}
  - {fileID: 1026898450}
  m_Father: {fileID: 0}
  m_RootOrder: 1
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 0, y: 0}
  m_Pivot: {x: 0, y: 0}
  --- !u!1001 &1995265978
  Prefab:
  m_ObjectHideFlags: 0
  serializedVersion: 2
  m_Modification:
  m_TransformParent: {fileID: 1866791882}
  m_Modifications:
  - target: {fileID: 22476196, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_LocalPosition.x
  value: 0
  objectReference: {fileID: 0}
  - target: {fileID: 22476196, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_LocalPosition.y
  value: 0
  objectReference: {fileID: 0}
  - target: {fileID: 22476196, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_LocalPosition.z
  value: 0
  objectReference: {fileID: 0}
  - target: {fileID: 22476196, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_LocalRotation.x
  value: 0
  objectReference: {fileID: 0}
  - target: {fileID: 22476196, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_LocalRotation.y
  value: 0
  objectReference: {fileID: 0}
  - target: {fileID: 22476196, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_LocalRotation.z
  value: 0
  objectReference: {fileID: 0}
  - target: {fileID: 22476196, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_LocalRotation.w
  value: 1
  objectReference: {fileID: 0}
  - target: {fileID: 22476196, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_RootOrder
  value: 2
  objectReference: {fileID: 0}
  - target: {fileID: 22476196, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_AnchoredPosition.x
  value: 0
  objectReference: {fileID: 0}
  - target: {fileID: 22476196, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_AnchoredPosition.y
  value: 0
  objectReference: {fileID: 0}
  - target: {fileID: 22476196, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_SizeDelta.x
  value: 250
  objectReference: {fileID: 0}
  - target: {fileID: 22476196, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_SizeDelta.y
  value: 45
  objectReference: {fileID: 0}
  - target: {fileID: 22476196, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_AnchorMin.x
  value: .5
  objectReference: {fileID: 0}
  - target: {fileID: 22476196, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_AnchorMin.y
  value: .5
  objectReference: {fileID: 0}
  - target: {fileID: 22476196, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_AnchorMax.x
  value: .5
  objectReference: {fileID: 0}
  - target: {fileID: 22476196, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_AnchorMax.y
  value: .5
  objectReference: {fileID: 0}
  - target: {fileID: 22476196, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_Pivot.x
  value: 1
  objectReference: {fileID: 0}
  - target: {fileID: 22476196, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_Pivot.y
  value: 0
  objectReference: {fileID: 0}
  - target: {fileID: 22478174, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_AnchorMin.y
  value: 1
  objectReference: {fileID: 0}
  - target: {fileID: 22478174, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_AnchorMax.y
  value: 1
  objectReference: {fileID: 0}
  - target: {fileID: 22478174, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_AnchoredPosition.x
  value: 125
  objectReference: {fileID: 0}
  - target: {fileID: 22478174, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_AnchoredPosition.y
  value: -12.5
  objectReference: {fileID: 0}
  - target: {fileID: 22478174, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_SizeDelta.x
  value: 250
  objectReference: {fileID: 0}
  - target: {fileID: 22478174, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_SizeDelta.y
  value: 25
  objectReference: {fileID: 0}
  - target: {fileID: 22483410, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_AnchorMin.y
  value: 1
  objectReference: {fileID: 0}
  - target: {fileID: 22483410, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_AnchorMax.y
  value: 1
  objectReference: {fileID: 0}
  - target: {fileID: 22483410, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_AnchoredPosition.x
  value: 125
  objectReference: {fileID: 0}
  - target: {fileID: 22483410, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_SizeDelta.x
  value: 250
  objectReference: {fileID: 0}
  - target: {fileID: 22483410, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_SizeDelta.y
  value: 20
  objectReference: {fileID: 0}
  - target: {fileID: 22475412, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_AnchorMin.y
  value: 1
  objectReference: {fileID: 0}
  - target: {fileID: 22475412, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_AnchorMax.y
  value: 1
  objectReference: {fileID: 0}
  - target: {fileID: 22475412, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_AnchoredPosition.x
  value: 125
  objectReference: {fileID: 0}
  - target: {fileID: 22475412, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_AnchoredPosition.y
  value: -32.5
  objectReference: {fileID: 0}
  - target: {fileID: 22475412, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_SizeDelta.x
  value: 250
  objectReference: {fileID: 0}
  - target: {fileID: 22475412, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  propertyPath: m_SizeDelta.y
  value: 25
  objectReference: {fileID: 0}
  m_RemovedComponents: []
  m_ParentPrefab: {fileID: 100100000, guid: a41f85cb0b8964f43947e85b3e833c0f, type: 2}
  m_IsPrefabParent: 0
  --- !u!1 &2037475080
  GameObject:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 0}
  serializedVersion: 4
  m_Component:
  - 224: {fileID: 2037475081}
  - 222: {fileID: 2037475083}
  - 114: {fileID: 2037475082}
  m_Layer: 5
  m_Name: Background-Editor
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
  --- !u!224 &2037475081
  RectTransform:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 0}
  m_GameObject: {fileID: 2037475080}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 1866791882}
  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_Pivot: {x: .5, y: .5}
  --- !u!114 &2037475082
  MonoBehaviour:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 0}
  m_GameObject: {fileID: 2037475080}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 0
  m_OnCullStateChanged:
  m_PersistentCalls:
  m_Calls: []
  m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
  Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
  m_Sprite: {fileID: 21300000, guid: b0e2a09d07dbbcb40b0d4db43cd044f9, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  --- !u!222 &2037475083
  CanvasRenderer:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 0}
  m_GameObject: {fileID: 2037475080}
  --- !u!1 &2134872726
  GameObject:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 0}
  serializedVersion: 4
  m_Component:
  - 4: {fileID: 2134872731}
  - 20: {fileID: 2134872730}
  - 92: {fileID: 2134872729}
  - 124: {fileID: 2134872728}
  - 81: {fileID: 2134872727}
  m_Layer: 0
  m_Name: Main Camera
  m_TagString: MainCamera
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
  --- !u!81 &2134872727
  AudioListener:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 0}
  m_GameObject: {fileID: 2134872726}
  m_Enabled: 1
  --- !u!124 &2134872728
  Behaviour:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 0}
  m_GameObject: {fileID: 2134872726}
  m_Enabled: 1
  --- !u!92 &2134872729
  Behaviour:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 0}
  m_GameObject: {fileID: 2134872726}
  m_Enabled: 1
  --- !u!20 &2134872730
  Camera:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 0}
  m_GameObject: {fileID: 2134872726}
  m_Enabled: 1
  serializedVersion: 2
  m_ClearFlags: 2
  m_BackGroundColor: {r: 0, g: 0, b: 0, a: .0196078438}
  m_NormalizedViewPortRect:
  serializedVersion: 2
  x: 0
  y: 0
  width: 1
  height: 1
  near clip plane: .300000012
  far clip plane: 1000
  field of view: 60
  orthographic: 1
  orthographic size: 5
  m_Depth: -1
  m_CullingMask:
  serializedVersion: 2
  m_Bits: 4294967295
  m_RenderingPath: -1
  m_TargetTexture: {fileID: 0}
  m_TargetDisplay: 0
  m_TargetEye: 3
  m_HDR: 0
  m_OcclusionCulling: 1
  m_StereoConvergence: 10
  m_StereoSeparation: .0219999999
  m_StereoMirrorMode: 0
  --- !u!4 &2134872731
  Transform:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 0}
  m_GameObject: {fileID: 2134872726}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: -10}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 0}
  m_RootOrder: 0
 
  using UnityEditor;
  using UnityEngine;
 
  public class BuildAssetBundles : MonoBehaviour
  {
  [MenuItem("Assets/Build Asset Bundles")]
  public static void Build()
  {
  BuildPipeline.BuildAssetBundles(Application.dataPath + "/../Output/KerbalEngineer", BuildAssetBundleOptions.UncompressedAssetBundle);
  }
  }
 Binary files /dev/null and b/Assets/Testing/background-editor.png differ
 Binary files /dev/null and b/Assets/Testing/background-flight.png differ
 Binary files a/Assets/ToolbarBackground.psd and /dev/null differ
file:a/Assets/ToolbarIcon.psd (deleted)
 Binary files a/Assets/ToolbarIcon.psd and /dev/null differ
  <?xml version="1.0" encoding="utf-8"?>
  <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
  <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
  <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
  <ProductVersion>10.0.20506</ProductVersion>
  <SchemaVersion>2.0</SchemaVersion>
  <ProjectGuid>{D7B7C6CE-6B5A-CE40-5B7C-9D0E6583E469}</ProjectGuid>
  <OutputType>Library</OutputType>
  <AssemblyName>Assembly-CSharp-Editor</AssemblyName>
  <FileAlignment>512</FileAlignment>
  <ProjectTypeGuids>{E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
  <TargetFrameworkIdentifier>.NETFramework</TargetFrameworkIdentifier>
  <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
  <TargetFrameworkProfile>Unity Full v3.5</TargetFrameworkProfile>
  <CompilerResponseFile></CompilerResponseFile>
  <UnityProjectType>Editor:5</UnityProjectType>
  <UnityBuildTarget>StandaloneWindows:5</UnityBuildTarget>
  <UnityVersion>5.2.4f1</UnityVersion>
  <RootNamespace></RootNamespace>
  <LangVersion Condition=" '$(VisualStudioVersion)' != '10.0' ">4</LangVersion>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
  <DebugType>pdbonly</DebugType>
  <Optimize>false</Optimize>
  <OutputPath>Temp\UnityVS_bin\Debug\</OutputPath>
  <IntermediateOutputPath>Temp\UnityVS_obj\Debug\</IntermediateOutputPath>
  <ErrorReport>prompt</ErrorReport>
  <WarningLevel>4</WarningLevel>
  <DefineConstants>DEBUG;TRACE;UNITY_5_2_4;UNITY_5_2;UNITY_5;ENABLE_NEW_BUGREPORTER;ENABLE_2D_PHYSICS;ENABLE_4_6_FEATURES;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_FRAME_DEBUGGER;ENABLE_GENERICS;ENABLE_HOME_SCREEN;ENABLE_IMAGEEFFECTS;ENABLE_LIGHT_PROBES_LEGACY;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_PLUGIN_INSPECTOR;ENABLE_SHADOWS;ENABLE_SINGLE_INSTANCE_BUILD_SETTING;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_REFLECTION_BUFFERS;INCLUDE_DYNAMIC_GI;INCLUDE_GI;INCLUDE_IL2CPP;INCLUDE_DIRECTX12;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_LOCALIZATION;ENABLE_ANDROID_ATLAS_ETC1_COMPRESSION;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_TEXTUREID_MAP;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_LOG_MIXED_STACKTRACE;ENABLE_UNITYWEBREQUEST;ENABLE_EVENT_QUEUE;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN</DefineConstants>
  <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
  <DebugType>pdbonly</DebugType>
  <Optimize>false</Optimize>
  <OutputPath>Temp\UnityVS_bin\Release\</OutputPath>
  <IntermediateOutputPath>Temp\UnityVS_obj\Release\</IntermediateOutputPath>
  <ErrorReport>prompt</ErrorReport>
  <WarningLevel>4</WarningLevel>
  <DefineConstants>TRACE;UNITY_5_2_4;UNITY_5_2;UNITY_5;ENABLE_NEW_BUGREPORTER;ENABLE_2D_PHYSICS;ENABLE_4_6_FEATURES;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_FRAME_DEBUGGER;ENABLE_GENERICS;ENABLE_HOME_SCREEN;ENABLE_IMAGEEFFECTS;ENABLE_LIGHT_PROBES_LEGACY;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_PLUGIN_INSPECTOR;ENABLE_SHADOWS;ENABLE_SINGLE_INSTANCE_BUILD_SETTING;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_REFLECTION_BUFFERS;INCLUDE_DYNAMIC_GI;INCLUDE_GI;INCLUDE_IL2CPP;INCLUDE_DIRECTX12;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_LOCALIZATION;ENABLE_ANDROID_ATLAS_ETC1_COMPRESSION;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_TEXTUREID_MAP;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_LOG_MIXED_STACKTRACE;ENABLE_UNITYWEBREQUEST;ENABLE_EVENT_QUEUE;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN</DefineConstants>
  <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
  </PropertyGroup>
  <ItemGroup>
  <Reference Include="mscorlib" />
  <Reference Include="System" />
  <Reference Include="System.XML" />
  <Reference Include="System.Core" />
  <Reference Include="Boo.Lang" />
  <Reference Include="UnityScript.Lang" />
  <Reference Include="System.Runtime.Serialization" />
  <Reference Include="System.Xml.Linq" />
  <Reference Include="UnityEngine">
  <HintPath>Library\UnityAssemblies\UnityEngine.dll</HintPath>
  </Reference>
  <Reference Include="UnityEditor">
  <HintPath>Library\UnityAssemblies\UnityEditor.dll</HintPath>
  </Reference>
  <Reference Include="UnityEditor.Advertisements">
  <HintPath>Library\UnityAssemblies\UnityEditor.Advertisements.dll</HintPath>
  </Reference>
  <Reference Include="UnityEngine.UI">
  <HintPath>Library\UnityAssemblies\UnityEngine.UI.dll</HintPath>
  </Reference>
  <Reference Include="UnityEditor.UI">
  <HintPath>Library\UnityAssemblies\UnityEditor.UI.dll</HintPath>
  </Reference>
  <Reference Include="UnityEngine.Networking">
  <HintPath>Library\UnityAssemblies\UnityEngine.Networking.dll</HintPath>
  </Reference>
  <Reference Include="UnityEditor.Networking">
  <HintPath>Library\UnityAssemblies\UnityEditor.Networking.dll</HintPath>
  </Reference>
  <Reference Include="UnityEditor.Graphs">
  <HintPath>Library\UnityAssemblies\UnityEditor.Graphs.dll</HintPath>
  </Reference>
  <Reference Include="UnityEditor.Android.Extensions">
  <HintPath>Library\UnityAssemblies\UnityEditor.Android.Extensions.dll</HintPath>
  </Reference>
  <Reference Include="UnityEditor.iOS.Extensions">
  <HintPath>Library\UnityAssemblies\UnityEditor.iOS.Extensions.dll</HintPath>
  </Reference>
  <Reference Include="UnityEditor.WP8.Extensions">
  <HintPath>Library\UnityAssemblies\UnityEditor.WP8.Extensions.dll</HintPath>
  </Reference>
  <Reference Include="UnityEditor.Metro.Extensions">
  <HintPath>Library\UnityAssemblies\UnityEditor.Metro.Extensions.dll</HintPath>
  </Reference>
  <Reference Include="UnityEditor.Tizen.Extensions">
  <HintPath>Library\UnityAssemblies\UnityEditor.Tizen.Extensions.dll</HintPath>
  </Reference>
  <Reference Include="UnityEditor.SamsungTV.Extensions">
  <HintPath>Library\UnityAssemblies\UnityEditor.SamsungTV.Extensions.dll</HintPath>
  </Reference>
  <Reference Include="UnityEditor.WebGL.Extensions">
  <HintPath>Library\UnityAssemblies\UnityEditor.WebGL.Extensions.dll</HintPath>
  </Reference>
  <Reference Include="UnityEditor.LinuxStandalone.Extensions">
  <HintPath>Library\UnityAssemblies\UnityEditor.LinuxStandalone.Extensions.dll</HintPath>
  </Reference>
  <Reference Include="UnityEditor.WindowsStandalone.Extensions">
  <HintPath>Library\UnityAssemblies\UnityEditor.WindowsStandalone.Extensions.dll</HintPath>
  </Reference>
  <Reference Include="UnityEditor.OSXStandalone.Extensions">
  <HintPath>Library\UnityAssemblies\UnityEditor.OSXStandalone.Extensions.dll</HintPath>
  </Reference>
  <Reference Include="SyntaxTree.VisualStudio.Unity.Bridge">
  <HintPath>Library\UnityAssemblies\SyntaxTree.VisualStudio.Unity.Bridge.dll</HintPath>
  </Reference>
  <Reference Include="Mono.Cecil">
  <HintPath>Library\UnityAssemblies\Mono.Cecil.dll</HintPath>
  </Reference>
  <Reference Include="UnityEditor.iOS.Extensions.Xcode">
  <HintPath>Library\UnityAssemblies\UnityEditor.iOS.Extensions.Xcode.dll</HintPath>
  </Reference>
  <Reference Include="KerbalEngineer.Unity">
  <HintPath>Assets\Plugins\KerbalEngineer.Unity.dll</HintPath>
  </Reference>
  </ItemGroup>
  <ItemGroup>
  <Compile Include="Assets\Scripts\Editor\BuildAssetBundles.cs" />
  </ItemGroup>
  <Import Project="$(MSBuildExtensionsPath)\SyntaxTree\UnityVS\2015\UnityVS.CSharp.targets" />
  </Project>
 
  <?xml version="1.0" encoding="utf-8"?>
  <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
  <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
  <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
  <ProductVersion>10.0.20506</ProductVersion>
  <SchemaVersion>2.0</SchemaVersion>
  <ProjectGuid>{26D24EAD-1AF6-6749-D9C8-C47AEC4E6A98}</ProjectGuid>
  <OutputType>Library</OutputType>
  <AssemblyName>Assembly-CSharp</AssemblyName>
  <FileAlignment>512</FileAlignment>
  <ProjectTypeGuids>{E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
  <TargetFrameworkIdentifier>.NETFramework</TargetFrameworkIdentifier>
  <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
  <TargetFrameworkProfile>Unity Subset v3.5</TargetFrameworkProfile>
  <CompilerResponseFile></CompilerResponseFile>
  <UnityProjectType>Game:1</UnityProjectType>
  <UnityBuildTarget>StandaloneWindows:5</UnityBuildTarget>
  <UnityVersion>5.3.3p2</UnityVersion>
  <RootNamespace></RootNamespace>
  <LangVersion Condition=" '$(VisualStudioVersion)' != '10.0' ">4</LangVersion>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
  <DebugType>pdbonly</DebugType>
  <Optimize>false</Optimize>
  <OutputPath>Temp\UnityVS_bin\Debug\</OutputPath>
  <IntermediateOutputPath>Temp\UnityVS_obj\Debug\</IntermediateOutputPath>
  <ErrorReport>prompt</ErrorReport>
  <WarningLevel>4</WarningLevel>
  <DefineConstants>DEBUG;TRACE;UNITY_5_3_3;UNITY_5_3;UNITY_5;ENABLE_NEW_BUGREPORTER;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_FRAME_DEBUGGER;ENABLE_GENERICS;ENABLE_HOME_SCREEN;ENABLE_IMAGEEFFECTS;ENABLE_LIGHT_PROBES_LEGACY;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_PLUGIN_INSPECTOR;ENABLE_SHADOWS;ENABLE_SINGLE_INSTANCE_BUILD_SETTING;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_SPRITE_POLYGON;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;INCLUDE_IL2CPP;INCLUDE_DIRECTX12;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_LOCALIZATION;ENABLE_ANDROID_ATLAS_ETC1_COMPRESSION;ENABLE_EDITOR_TESTS_RUNNER;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_TEXTUREID_MAP;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_LOG_MIXED_STACKTRACE;ENABLE_UNITYWEBREQUEST;ENABLE_EVENT_QUEUE;ENABLE_CLUSTERINPUT;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN</DefineConstants>
  <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
  <DebugType>pdbonly</DebugType>
  <Optimize>false</Optimize>
  <OutputPath>Temp\UnityVS_bin\Release\</OutputPath>
  <IntermediateOutputPath>Temp\UnityVS_obj\Release\</IntermediateOutputPath>
  <ErrorReport>prompt</ErrorReport>
  <WarningLevel>4</WarningLevel>
  <DefineConstants>TRACE;UNITY_5_3_3;UNITY_5_3;UNITY_5;ENABLE_NEW_BUGREPORTER;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_FRAME_DEBUGGER;ENABLE_GENERICS;ENABLE_HOME_SCREEN;ENABLE_IMAGEEFFECTS;ENABLE_LIGHT_PROBES_LEGACY;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_PLUGIN_INSPECTOR;ENABLE_SHADOWS;ENABLE_SINGLE_INSTANCE_BUILD_SETTING;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_SPRITE_POLYGON;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;INCLUDE_IL2CPP;INCLUDE_DIRECTX12;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_LOCALIZATION;ENABLE_ANDROID_ATLAS_ETC1_COMPRESSION;ENABLE_EDITOR_TESTS_RUNNER;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_TEXTUREID_MAP;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_LOG_MIXED_STACKTRACE;ENABLE_UNITYWEBREQUEST;ENABLE_EVENT_QUEUE;ENABLE_CLUSTERINPUT;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN</DefineConstants>
  <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
  </PropertyGroup>
  <ItemGroup>
  <Reference Include="mscorlib" />
  <Reference Include="System" />
  <Reference Include="System.XML" />
  <Reference Include="System.Core" />
  <Reference Include="Boo.Lang" />
  <Reference Include="UnityScript.Lang" />
  <Reference Include="System.Runtime.Serialization" />
  <Reference Include="System.Xml.Linq" />
  <Reference Include="UnityEngine">
  <HintPath>Library\UnityAssemblies\UnityEngine.dll</HintPath>
  </Reference>
  <Reference Include="UnityEngine.UI">
  <HintPath>Library\UnityAssemblies\UnityEngine.UI.dll</HintPath>
  </Reference>
  <Reference Include="UnityEngine.Networking">
  <HintPath>Library\UnityAssemblies\UnityEngine.Networking.dll</HintPath>
  </Reference>
  <Reference Include="UnityEngine.Networking">
  <HintPath>Library\UnityAssemblies\UnityEngine.Networking.dll</HintPath>
  </Reference>
  <Reference Include="UnityEngine.UI">
  <HintPath>Library\UnityAssemblies\UnityEngine.UI.dll</HintPath>
  </Reference>
  <Reference Include="UnityEditor">
  <HintPath>Library\UnityAssemblies\UnityEditor.dll</HintPath>
  </Reference>
  </ItemGroup>
  <ItemGroup>
  <Compile Include="Assets\Scripts\BuildAssetBundles.cs" />
  </ItemGroup>
  <Import Project="$(MSBuildExtensionsPath)\SyntaxTree\UnityVS\2015\UnityVS.CSharp.targets" />
  </Project>
 
  namespace KerbalEngineer.Unity
  {
  using System;
  using System.Collections;
  using UnityEngine;
 
  [RequireComponent(typeof(CanvasGroup))]
  public class CanvasGroupFader : MonoBehaviour
  {
  private CanvasGroup m_CanvasGroup;
  private IEnumerator m_FadeCoroutine;
 
  /// <summary>
  /// Fades the canvas group to a specified alpha value with optional callback.
  /// </summary>
  public void FadeTo(float alpha, Action callback = null)
  {
  if (m_CanvasGroup == null || gameObject.activeInHierarchy == false)
  {
  return;
  }
 
  Fade(m_CanvasGroup.alpha, alpha, callback);
  }
 
  /// <summary>
  /// Sets the alpha value of the canvas group.
  /// </summary>
  public void SetAlpha(float alpha)
  {
  if (m_CanvasGroup == null)
  {
  return;
  }
 
  alpha = Mathf.Clamp01(alpha);
  m_CanvasGroup.alpha = alpha;
  m_CanvasGroup.interactable = !(alpha < 1.0f);
  }
 
  protected virtual void Awake()
  {
  // cache components
  m_CanvasGroup = GetComponent<CanvasGroup>();
  }
 
  /// <summary>
  /// Starts a fade from one alpha value to another with callback.
  /// </summary>
  private void Fade(float from, float to, Action callback)
  {
  if (m_FadeCoroutine != null)
  {
  StopCoroutine(m_FadeCoroutine);
  }
 
  m_FadeCoroutine = FadeCoroutine(from, to, callback);
  StartCoroutine(m_FadeCoroutine);
  }
 
  /// <summary>
  /// Coroutine that handles the fading.
  /// </summary>
  private IEnumerator FadeCoroutine(float from, float to, Action callback)
  {
  float progress = 0.0f;
 
  while (progress <= 1.0f)
  {
  progress += Time.deltaTime;
  SetAlpha(Mathf.Lerp(from, to, progress));
  yield return null;
  }
 
  callback?.Invoke();
  }
  }
  }
  <?xml version="1.0" encoding="utf-8"?>
  <Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
  <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
  <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
  <ProjectGuid>{5387BB1E-32B1-4BAC-B03F-100570B9554C}</ProjectGuid>
  <OutputType>Library</OutputType>
  <AppDesignerFolder>Properties</AppDesignerFolder>
  <RootNamespace>KerbalEngineer.Unity</RootNamespace>
  <AssemblyName>KerbalEngineer.Unity</AssemblyName>
  <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
  <FileAlignment>512</FileAlignment>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
  <DebugSymbols>true</DebugSymbols>
  <DebugType>full</DebugType>
  <Optimize>false</Optimize>
  <OutputPath>bin\Debug\</OutputPath>
  <DefineConstants>DEBUG;TRACE</DefineConstants>
  <ErrorReport>prompt</ErrorReport>
  <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
  <DebugType>none</DebugType>
  <Optimize>true</Optimize>
  <OutputPath>..\Output\KerbalEngineer\</OutputPath>
  <DefineConstants>
  </DefineConstants>
  <ErrorReport>prompt</ErrorReport>
  <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
  <Compile Include="CanvasGroupFader.cs" />
  <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>
  <ItemGroup>
  <Reference Include="System">
  <HintPath>..\..\game\KSP_Data\Managed\System.dll</HintPath>
  <Private>False</Private>
  </Reference>
  <Reference Include="UnityEngine">
  <HintPath>..\..\game\KSP_Data\Managed\UnityEngine.dll</HintPath>
  <Private>False</Private>
  </Reference>
  <Reference Include="UnityEngine.UI">
  <HintPath>..\..\game\KSP_Data\Managed\UnityEngine.UI.dll</HintPath>
  <Private>False</Private>
  </Reference>
  </ItemGroup>
  <ItemGroup>
  <ProjectReference Include="..\KerbalEngineer\KerbalEngineer.csproj">
  <Project>{39806613-e0b7-46e0-89a6-a569ec538cbb}</Project>
  <Name>KerbalEngineer</Name>
  <Private>False</Private>
  </ProjectReference>
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <PropertyGroup>
  <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)Assets\Plugins" /Y</PostBuildEvent>
  </PropertyGroup>
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
  Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
  </Project>
  using System.Reflection;
  using System.Runtime.InteropServices;
 
  [assembly: AssemblyTitle("KerbalEngineer.Unity")]
  [assembly: AssemblyProduct("KerbalEngineer.Unity")]
  [assembly: AssemblyCopyright("Copyright © CYBUTEK 2016")]
  [assembly: ComVisible(false)]
  [assembly: Guid("5387bb1e-32b1-4bac-b03f-100570b9554c")]
  [assembly: AssemblyVersion("1.0.0.0")]
  [assembly: AssemblyFileVersion("1.0.0.0")]
 
Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013 # Visual Studio 2015
VisualStudioVersion = 12.0.30110.0 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KerbalEngineer.CSharp.Editor", "KerbalEngineer.CSharp.Editor.csproj", "{D7B7C6CE-6B5A-CE40-5B7C-9D0E6583E469}"
MinimumVisualStudioVersion = 10.0.40219.1 EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KerbalEngineer", "KerbalEngineer\KerbalEngineer.csproj", "{39806613-E0B7-46E0-89A6-A569EC538CBB}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KerbalEngineer", "KerbalEngineer\KerbalEngineer.csproj", "{39806613-E0B7-46E0-89A6-A569EC538CBB}"
  EndProject
  Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KerbalEngineer.Unity", "KerbalEngineer.Unity\KerbalEngineer.Unity.csproj", "{5387BB1E-32B1-4BAC-B03F-100570B9554C}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU Release|Any CPU = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
  {D7B7C6CE-6B5A-CE40-5B7C-9D0E6583E469}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
  {D7B7C6CE-6B5A-CE40-5B7C-9D0E6583E469}.Debug|Any CPU.Build.0 = Debug|Any CPU
  {D7B7C6CE-6B5A-CE40-5B7C-9D0E6583E469}.Release|Any CPU.ActiveCfg = Release|Any CPU
  {D7B7C6CE-6B5A-CE40-5B7C-9D0E6583E469}.Release|Any CPU.Build.0 = Release|Any CPU
{39806613-E0B7-46E0-89A6-A569EC538CBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {39806613-E0B7-46E0-89A6-A569EC538CBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{39806613-E0B7-46E0-89A6-A569EC538CBB}.Debug|Any CPU.Build.0 = Debug|Any CPU {39806613-E0B7-46E0-89A6-A569EC538CBB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{39806613-E0B7-46E0-89A6-A569EC538CBB}.Release|Any CPU.ActiveCfg = Release|Any CPU {39806613-E0B7-46E0-89A6-A569EC538CBB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{39806613-E0B7-46E0-89A6-A569EC538CBB}.Release|Any CPU.Build.0 = Release|Any CPU {39806613-E0B7-46E0-89A6-A569EC538CBB}.Release|Any CPU.Build.0 = Release|Any CPU
  {5387BB1E-32B1-4BAC-B03F-100570B9554C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
  {5387BB1E-32B1-4BAC-B03F-100570B9554C}.Debug|Any CPU.Build.0 = Debug|Any CPU
  {5387BB1E-32B1-4BAC-B03F-100570B9554C}.Release|Any CPU.ActiveCfg = Release|Any CPU
  {5387BB1E-32B1-4BAC-B03F-100570B9554C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
EndGlobalSection EndGlobalSection
EndGlobal EndGlobal
   
  //
  // Kerbal Engineer Redux
  //
  // 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
  // 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
  {
  using KSP.UI;
  using KSP.UI.Screens;
  using UnityEngine;
 
  public class AppLauncherButton : MonoBehaviour
  {
  private static Texture m_IconTexture;
  private ApplicationLauncherButton m_Button;
 
  /// <summary>
  /// Gets or sets the toggle button state.
  /// </summary>
  public bool isOn
  {
  get
  {
  return m_Button != null &&
  m_Button.toggleButton.Button.interactable &&
  m_Button.toggleButton.CurrentState == UIRadioButton.State.True;
  }
  set
  {
  if (m_Button == null)
  {
  return;
  }
 
  if (value)
  {
  SetOn();
  }
  else
  {
  SetOff();
  }
  }
  }
 
  /// <summary>
  /// Disables the button if not already disabled.
  /// </summary>
  public void Disable()
  {
  if (m_Button != null && m_Button.toggleButton.Button.interactable)
  {
  m_Button.Disable();
  }
  }
 
  /// <summary>
  /// Enables the button if not already enabled.
  /// </summary>
  public void Enable()
  {
  if (m_Button != null && m_Button.toggleButton.Button.interactable == false)
  {
  m_Button.Enable();
  }
  }
 
  /// <summary>
  /// Gets the anchor position for pop-up content.
  /// </summary>
  public Vector3 GetAnchor()
  {
  if (m_Button == null)
  {
  return Vector3.zero;
  }
 
  Vector3 anchor = m_Button.GetAnchor();
 
  anchor.x -= 3.0f;
 
  return anchor;
  }
 
  /// <summary>
  /// Enables and sets the button to off.
  /// </summary>
  public void SetOff()
  {
  Enable();
 
  if (m_Button != null && m_Button.toggleButton.CurrentState != UIRadioButton.State.False)
  {
  m_Button.SetTrue();
  }
  }
 
  /// <summary>
  /// Enables and sets the button to on.
  /// </summary>
  public void SetOn()
  {
  Enable();
 
  if (m_Button != null && m_Button.toggleButton.CurrentState != UIRadioButton.State.True)
  {
  m_Button.SetTrue();
  }
  }
 
  protected virtual void Awake()
  {
  // cache icon texture
  if (m_IconTexture == null && AssetBundleLoader.images != null)
  {
  m_IconTexture = AssetBundleLoader.images.LoadAsset<Texture2D>("app-launcher-icon");
  }
 
  // subscribe event listeners
  GameEvents.onGUIApplicationLauncherReady.Add(OnGUIApplicationLauncherReady);
  GameEvents.onGUIApplicationLauncherUnreadifying.Add(OnGUIApplicationLauncherUnreadifying);
  }
 
  protected virtual void OnDestroy()
  {
  // unsubscribe event listeners
  GameEvents.onGUIApplicationLauncherReady.Remove(OnGUIApplicationLauncherReady);
  GameEvents.onGUIApplicationLauncherUnreadifying.Remove(OnGUIApplicationLauncherUnreadifying);
  }
 
  /// <summary>
  /// Called on button being disabled.
  /// </summary>
  protected virtual void OnDisable() { }
 
  /// <summary>
  /// Called on button being enabled.
  /// </summary>
  protected virtual void OnEnable() { }
 
  /// <summary>
  /// Called on button being toggled off.
  /// </summary>
  protected virtual void OnFalse() { }
 
  /// <summary>
  /// Called on mouse hovering.
  /// </summary>
  protected virtual void OnHover() { }
 
  /// <summary>
  /// Called on mouse exiting hover.
  /// </summary>
  protected virtual void OnHoverOut() { }
 
  /// <summary>
  /// Called on button being ready.
  /// </summary>
  protected virtual void OnReady() { }
 
  /// <summary>
  /// Called after the application launcher is ready and the button created.
  /// </summary>
  protected virtual void OnTrue() { }
 
  /// <summary>
  /// Called after the application launcher is unreadified and the button removed.
  /// </summary>
  protected virtual void OnUnreadifying() { }
 
  private void OnGUIApplicationLauncherReady()
  {
  // create button
  if (ApplicationLauncher.Instance != null)
  {
  m_Button = ApplicationLauncher.Instance.AddModApplication(OnTrue, OnFalse, OnHover, OnHoverOut, OnEnable, OnDisable, ApplicationLauncher.AppScenes.ALWAYS, m_IconTexture);
  }
 
  OnReady();
  }
 
  private void OnGUIApplicationLauncherUnreadifying(GameScenes scene)
  {
  // remove button
  if (ApplicationLauncher.Instance != null && m_Button != null)
  {
  ApplicationLauncher.Instance.RemoveModApplication(m_Button);
  }
 
  OnUnreadifying();
  }
  }
  }
  namespace KerbalEngineer
  {
  using UnityEngine;
 
  [KSPAddon(KSPAddon.Startup.Instantly, false)]
  public class AssetBundleLoader : MonoBehaviour
  {
  private static AssetBundle m_Images;
  private static AssetBundle m_Prefabs;
 
  /// <summary>
  /// Gets the loaded images asset bundle.
  /// </summary>
  public static AssetBundle images
  {
  get
  {
  return m_Images;
  }
  }
 
  /// <summary>
  /// Gets the loaded prefabs asset bundle.
  /// </summary>
  public static AssetBundle prefabs
  {
  get
  {
  return m_Prefabs;
  }
  }
 
  protected virtual void Awake()
  {
  string bundlePath = EngineerGlobals.AssemblyPath;
 
  m_Images = AssetBundle.CreateFromFile(bundlePath + "/images");
  m_Prefabs = AssetBundle.CreateFromFile(bundlePath + "/prefabs");
  }
  }
  }
  //
  // Kerbal Engineer Redux
  //
  // 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
  // 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.Editor
  {
  [KSPAddon(KSPAddon.Startup.EditorAny, false)]
  public class BuildAppLauncher : AppLauncherButton
  {
  protected override void OnFalse()
  {
  if (BuildAdvanced.Instance != null)
  {
  BuildAdvanced.Instance.Visible = false;
  }
  }
 
  protected override void OnTrue()
  {
  if (BuildAdvanced.Instance != null)
  {
  BuildAdvanced.Instance.Visible = true;
  }
  }
 
  protected virtual void Update()
  {
  if (BuildAdvanced.Instance == null)
  {
  return;
  }
 
  // check if vessel is currently under construction with the presence of a root part
  if (EditorLogic.RootPart != null)
  {
  // set button state based on existing visibility
  isOn = BuildAdvanced.Instance.Visible;
  }
  else
  {
  Disable();
  }
  }
  }
  }
// //
// Kerbal Engineer Redux // Kerbal Engineer Redux
// //
// Copyright (C) 2014 CYBUTEK // Copyright (C) 2014 CYBUTEK
// //
// This program is free software: you can redistribute it and/or modify // 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 // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// //
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
// //
   
namespace KerbalEngineer.Editor namespace KerbalEngineer.Editor
{ {
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using Extensions; using Extensions;
using Helpers; using Helpers;
using UnityEngine; using UnityEngine;
   
public class BuildOverlayPartInfo : MonoBehaviour public class BuildOverlayPartInfo : MonoBehaviour
{ {
private static bool clickToOpen = true; private static bool clickToOpen = true;
private static ModuleGenerator.GeneratorResource generatorResource; private static ModuleResource generatorResource;
private static ModuleAlternator moduleAlternator; private static ModuleAlternator moduleAlternator;
private static ModuleDataTransmitter moduleDataTransmitter; private static ModuleDataTransmitter moduleDataTransmitter;
private static ModuleDeployableSolarPanel moduleDeployableSolarPanel; private static ModuleDeployableSolarPanel moduleDeployableSolarPanel;
private static ModuleGenerator moduleGenerator; private static ModuleGenerator moduleGenerator;
private static ModuleGimbal moduleGimbal; private static ModuleGimbal moduleGimbal;
private static ModuleParachute moduleParachute; private static ModuleParachute moduleParachute;
private static ModuleRCS moduleRcs; private static ModuleRCS moduleRcs;
private static ModuleReactionWheel moduleReactionWheel; private static ModuleReactionWheel moduleReactionWheel;
private static ModuleResource moduleResource; private static ModuleResource moduleResource;
private static ModuleScienceExperiment moduleScienceExperiment; private static ModuleScienceExperiment moduleScienceExperiment;
private static bool namesOnly; private static bool namesOnly;
private static Part part; private static Part part;
private static PartInfoItem partInfoItem; private static PartInfoItem partInfoItem;
private static PartResource partResource; private static PartResource partResource;
private static Propellant propellant; private static Propellant propellant;
private static PartExtensions.ProtoModuleDecoupler protoModuleDecoupler; private static PartExtensions.ProtoModuleDecoupler protoModuleDecoupler;
private static PartExtensions.ProtoModuleEngine protoModuleEngine; private static PartExtensions.ProtoModuleEngine protoModuleEngine;
private static bool visible = true; private static bool visible = true;
   
private readonly List<PartInfoItem> infoItems = new List<PartInfoItem>(); private readonly List<PartInfoItem> infoItems = new List<PartInfoItem>();
   
private Rect position; private Rect position;
private Part selectedPart; private Part selectedPart;
private bool showInfo; private bool showInfo;
private bool skipFrame; private bool skipFrame;
   
public static bool ClickToOpen public static bool ClickToOpen
{ {
get get
{ {
return clickToOpen; return clickToOpen;
} }
set set
{ {
clickToOpen = value; clickToOpen = value;
} }
} }
   
public static bool Hidden { get; set; } public static bool Hidden { get; set; }
   
public static bool NamesOnly public static bool NamesOnly
{ {
get get
{ {
return namesOnly; return namesOnly;
} }
set set
{ {
namesOnly = value; namesOnly = value;
} }
} }
   
public static bool Visible public static bool Visible
{ {
get get
{ {
return visible; return visible;
} }
set set
{ {
visible = value; visible = value;
} }
} }
   
protected void OnGUI() protected void OnGUI()
{ {
try try
{ {
if (!Visible || Hidden || selectedPart == null) if (!Visible || Hidden || selectedPart == null)
{ {
return; return;
} }
   
position = GUILayout.Window(GetInstanceID(), position, Window, String.Empty, BuildOverlay.WindowStyle); position = GUILayout.Window(GetInstanceID(), position, Window, String.Empty, BuildOverlay.WindowStyle);
} }
catch (Exception ex) catch (Exception ex)
   
{ {
Logger.Exception(ex); Logger.Exception(ex);
} }
} }
   
protected void Update() protected void Update()
{ {
try try
{ {
if (!Visible || Hidden || EditorLogic.RootPart == null || EditorLogic.fetch.editorScreen != EditorScreen.Parts) if (!Visible || Hidden || EditorLogic.RootPart == null || EditorLogic.fetch.editorScreen != EditorScreen.Parts)
{ {
return; return;
} }
   
position.x = Mathf.Clamp(Input.mousePosition.x + 16.0f, 0.0f, Screen.width - position.width); position.x = Mathf.Clamp(Input.mousePosition.x + 16.0f, 0.0f, Screen.width - position.width);
position.y = Mathf.Clamp(Screen.height - Input.mousePosition.y, 0.0f, Screen.height - position.height); position.y = Mathf.Clamp(Screen.height - Input.mousePosition.y, 0.0f, Screen.height - position.height);
if (position.x < Input.mousePosition.x + 20.0f) if (position.x < Input.mousePosition.x + 20.0f)
{ {
position.y = Mathf.Clamp(position.y + 20.0f, 0.0f, Screen.height - position.height); position.y = Mathf.Clamp(position.y + 20.0f, 0.0f, Screen.height - position.height);
} }
if (position.x < Input.mousePosition.x + 16.0f && position.y < Screen.height - Input.mousePosition.y) if (position.x < Input.mousePosition.x + 16.0f && position.y < Screen.height - Input.mousePosition.y)
{ {
position.x = Input.mousePosition.x - 3 - position.width; position.x = Input.mousePosition.x - 3 - position.width;
} }
   
part = EditorLogic.fetch.ship.parts.Find(p => p.stackIcon.highlightIcon) ?? EditorLogic.SelectedPart; part = EditorLogic.fetch.ship.parts.Find(p => p.stackIcon.Highlighted) ?? EditorLogic.SelectedPart;
if (part != null) if (part != null)
{ {
if (!part.Equals(selectedPart)) if (!part.Equals(selectedPart))
{ {
selectedPart = part; selectedPart = part;
ResetInfo(); ResetInfo();
} }
if (NamesOnly || skipFrame) if (NamesOnly || skipFrame)
{ {
skipFrame = false; skipFrame = false;
return; return;
} }
   
if (!showInfo && Input.GetMouseButtonDown(2)) if (!showInfo && Input.GetMouseButtonDown(2))
{ {
showInfo = true; showInfo = true;
} }
else if (ClickToOpen && showInfo && Input.GetMouseButtonDown(2)) else if (ClickToOpen && showInfo && Input.GetMouseButtonDown(2))
{ {
ResetInfo(); ResetInfo();
} }
   
if (showInfo) if (showInfo)
{ {
PartInfoItem.Release(infoItems); PartInfoItem.Release(infoItems);
infoItems.Clear(); infoItems.Clear();
SetCostInfo(); SetCostInfo();
SetMassItems(); SetMassItems();
SetResourceItems(); SetResourceItems();
SetEngineInfo(); SetEngineInfo();
SetAlternatorInfo(); SetAlternatorInfo();
SetGimbalInfo(); SetGimbalInfo();
SetRcsInfo(); SetRcsInfo();
SetParachuteInfo(); SetParachuteInfo();
SetSasInfo(); SetSasInfo();
SetReactionWheelInfo(); SetReactionWheelInfo();
SetSolarPanelInfo(); SetSolarPanelInfo();
SetGeneratorInfo(); SetGeneratorInfo();
SetDecouplerInfo(); SetDecouplerInfo();
SetTransmitterInfo(); SetTransmitterInfo();
SetScienceExperimentInfo(); SetScienceExperimentInfo();
SetScienceContainerInfo(); SetScienceContainerInfo();
SetSingleActivationInfo(); SetSingleActivationInfo();
} }
} }
else else
{ {
selectedPart = null; selectedPart = null;
} }
} }
catch (Exception ex) catch (Exception ex)
{ {
Logger.Exception(ex); Logger.Exception(ex);
} }
} }
   
private void ResetInfo() private void ResetInfo()
{ {
showInfo = !clickToOpen; showInfo = !clickToOpen;
skipFrame = true; skipFrame = true;
position.width = namesOnly || clickToOpen ? 0.0f : 200.0f; position.width = namesOnly || clickToOpen ? 0.0f : 200.0f;
position.height = 0.0f; position.height = 0.0f;
} }
   
private void SetAlternatorInfo() private void SetAlternatorInfo()
{ {
moduleAlternator = selectedPart.GetModule<ModuleAlternator>(); moduleAlternator = selectedPart.GetModule<ModuleAlternator>();
if (moduleAlternator != null) if (moduleAlternator != null)
{ {
infoItems.Add(PartInfoItem.Create("Alternator")); infoItems.Add(PartInfoItem.Create("Alternator"));
for (int i = 0; i < moduleAlternator.outputResources.Count; ++i) for (int i = 0; i < moduleAlternator.outputResources.Count; ++i)
{ {
moduleResource = moduleAlternator.outputResources[i]; moduleResource = moduleAlternator.outputResources[i];
infoItems.Add(PartInfoItem.Create("\t" + moduleResource.name, moduleResource.rate.ToRate())); infoItems.Add(PartInfoItem.Create("\t" + moduleResource.name, moduleResource.rate.ToRate()));
} }
} }
} }
   
private void SetCostInfo() private void SetCostInfo()
{ {
infoItems.Add(PartInfoItem.Create("Cost", Units.ConcatF(selectedPart.GetCostDry(), selectedPart.GetCostWet()))); infoItems.Add(PartInfoItem.Create("Cost", Units.ConcatF(selectedPart.GetCostDry(), selectedPart.GetCostWet())));
} }
   
private void SetDecouplerInfo() private void SetDecouplerInfo()
{ {
protoModuleDecoupler = selectedPart.GetProtoModuleDecoupler(); protoModuleDecoupler = selectedPart.GetProtoModuleDecoupler();
if (protoModuleDecoupler != null) if (protoModuleDecoupler != null)
{ {
infoItems.Add(PartInfoItem.Create("Ejection Force", protoModuleDecoupler.EjectionForce.ToForce())); infoItems.Add(PartInfoItem.Create("Ejection Force", protoModuleDecoupler.EjectionForce.ToForce()));
if (protoModuleDecoupler.IsOmniDecoupler) if (protoModuleDecoupler.IsOmniDecoupler)
{ {
infoItems.Add(PartInfoItem.Create("Omni-directional")); infoItems.Add(PartInfoItem.Create("Omni-directional"));
} }
} }
} }
   
private void SetEngineInfo() private void SetEngineInfo()
{ {
protoModuleEngine = selectedPart.GetProtoModuleEngine(); protoModuleEngine = selectedPart.GetProtoModuleEngine();
if (protoModuleEngine != null) if (protoModuleEngine != null)
{ {
infoItems.Add(PartInfoItem.Create("Thrust", Units.ToForce(protoModuleEngine.MinimumThrust, protoModuleEngine.MaximumThrust))); infoItems.Add(PartInfoItem.Create("Thrust", Units.ToForce(protoModuleEngine.MinimumThrust, protoModuleEngine.MaximumThrust)));
infoItems.Add(PartInfoItem.Create("Isp", Units.ConcatF(protoModuleEngine.GetSpecificImpulse(1.0f), protoModuleEngine.GetSpecificImpulse(0.0f)) + "s")); infoItems.Add(PartInfoItem.Create("Isp", Units.ConcatF(protoModuleEngine.GetSpecificImpulse(1.0f), protoModuleEngine.GetSpecificImpulse(0.0f)) + "s"));
if (protoModuleEngine.Propellants.Count > 0) if (protoModuleEngine.Propellants.Count > 0)
{ {
infoItems.Add(PartInfoItem.Create("Propellants")); infoItems.Add(PartInfoItem.Create("Propellants"));
   
float totalRatio = 0.0f; float totalRatio = 0.0f;
for (int i = 0; i < protoModuleEngine.Propellants.Count; ++i) for (int i = 0; i < protoModuleEngine.Propellants.Count; ++i)
{ {
totalRatio = totalRatio + protoModuleEngine.Propellants[i].ratio; totalRatio = totalRatio + protoModuleEngine.Propellants[i].ratio;
} }
   
for (int i = 0; i < protoModuleEngine.Propellants.Count; ++i) for (int i = 0; i < protoModuleEngine.Propellants.Count; ++i)
{ {
propellant = protoModuleEngine.Propellants[i]; propellant = protoModuleEngine.Propellants[i];
infoItems.Add(PartInfoItem.Create("\t" + propellant.name, (propellant.ratio / totalRatio).ToPercent())); infoItems.Add(PartInfoItem.Create("\t" + propellant.name, (propellant.ratio / totalRatio).ToPercent()));
} }
} }
} }
} }
   
private void SetGeneratorInfo() private void SetGeneratorInfo()
{ {
moduleGenerator = selectedPart.GetModule<ModuleGenerator>(); moduleGenerator = selectedPart.GetModule<ModuleGenerator>();
if (moduleGenerator != null) if (moduleGenerator != null)
{ {
if (moduleGenerator.inputList.Count > 0) if (moduleGenerator.inputList.Count > 0)
{ {
infoItems.Add(PartInfoItem.Create("Generator Input")); infoItems.Add(PartInfoItem.Create("Generator Input"));
for (int i = 0; i < moduleGenerator.inputList.Count; ++i) for (int i = 0; i < moduleGenerator.inputList.Count; ++i)
{ {
generatorResource = moduleGenerator.inputList[i]; generatorResource = moduleGenerator.inputList[i];
infoItems.Add(PartInfoItem.Create("\t" + generatorResource.name, generatorResource.rate.ToRate())); infoItems.Add(PartInfoItem.Create("\t" + generatorResource.name, generatorResource.rate.ToRate()));
} }
} }
if (moduleGenerator.outputList.Count > 0) if (moduleGenerator.outputList.Count > 0)
{ {
infoItems.Add(PartInfoItem.Create("Generator Output")); infoItems.Add(PartInfoItem.Create("Generator Output"));
for (int i = 0; i < moduleGenerator.outputList.Count; ++i) for (int i = 0; i < moduleGenerator.outputList.Count; ++i)
{ {
generatorResource = moduleGenerator.outputList[i]; generatorResource = moduleGenerator.outputList[i];
infoItems.Add(PartInfoItem.Create("\t" + generatorResource.name, generatorResource.rate.ToRate())); infoItems.Add(PartInfoItem.Create("\t" + generatorResource.name, generatorResource.rate.ToRate()));
} }
} }
if (moduleGenerator.isAlwaysActive) if (moduleGenerator.isAlwaysActive)
{ {
infoItems.Add(PartInfoItem.Create("Generator is Always Active")); infoItems.Add(PartInfoItem.Create("Generator is Always Active"));
} }
} }
} }
   
private void SetGimbalInfo() private void SetGimbalInfo()
{ {
moduleGimbal = selectedPart.GetModule<ModuleGimbal>(); moduleGimbal = selectedPart.GetModule<ModuleGimbal>();
if (moduleGimbal != null) if (moduleGimbal != null)
{ {
infoItems.Add(PartInfoItem.Create("Thrust Vectoring", moduleGimbal.gimbalRange.ToString("F2"))); infoItems.Add(PartInfoItem.Create("Thrust Vectoring", moduleGimbal.gimbalRange.ToString("F2")));
} }
} }
   
private void SetMassItems() private void SetMassItems()
{ {
if (selectedPart.physicalSignificance == Part.PhysicalSignificance.FULL) if (selectedPart.physicalSignificance == Part.PhysicalSignificance.FULL)
{ {
infoItems.Add(PartInfoItem.Create("Mass", Units.ToMass(selectedPart.GetDryMass(), selectedPart.GetWetMass()))); infoItems.Add(PartInfoItem.Create("Mass", Units.ToMass(selectedPart.GetDryMass(), selectedPart.GetWetMass())));
} }
} }
   
private void SetParachuteInfo() private void SetParachuteInfo()
{ {
moduleParachute = selectedPart.GetModule<ModuleParachute>(); moduleParachute = selectedPart.GetModule<ModuleParachute>();
if (moduleParachute != null) if (moduleParachute != null)
{ {
infoItems.Add(PartInfoItem.Create("Deployed Drag", Units.ConcatF(moduleParachute.semiDeployedDrag, moduleParachute.fullyDeployedDrag))); infoItems.Add(PartInfoItem.Create("Deployed Drag", Units.ConcatF(moduleParachute.semiDeployedDrag, moduleParachute.fullyDeployedDrag)));
infoItems.Add(PartInfoItem.Create("Deployment Altitude", moduleParachute.deployAltitude.ToDistance())); infoItems.Add(PartInfoItem.Create("Deployment Altitude", moduleParachute.deployAltitude.ToDistance()));
infoItems.Add(PartInfoItem.Create("Deployment Pressure", moduleParachute.minAirPressureToOpen.ToString("F2"))); infoItems.Add(PartInfoItem.Create("Deployment Pressure", moduleParachute.minAirPressureToOpen.ToString("F2")));
} }
} }
   
private void SetRcsInfo() private void SetRcsInfo()
{ {
moduleRcs = selectedPart.GetModule<ModuleRCS>(); moduleRcs = selectedPart.GetModule<ModuleRCS>();
if (moduleRcs != null) if (moduleRcs != null)
{ {
infoItems.Add(PartInfoItem.Create("Thruster Power", moduleRcs.thrusterPower.ToForce())); infoItems.Add(PartInfoItem.Create("Thruster Power", moduleRcs.thrusterPower.ToForce()));
infoItems.Add(PartInfoItem.Create("Specific Impulse", Units.ConcatF(moduleRcs.atmosphereCurve.Evaluate(1.0f), moduleRcs.atmosphereCurve.Evaluate(0.0f)) + "s")); infoItems.Add(PartInfoItem.Create("Specific Impulse", Units.ConcatF(moduleRcs.atmosphereCurve.Evaluate(1.0f), moduleRcs.atmosphereCurve.Evaluate(0.0f)) + "s"));
} }
} }
   
private void SetReactionWheelInfo() private void SetReactionWheelInfo()
{ {
moduleReactionWheel = selectedPart.GetModule<ModuleReactionWheel>(); moduleReactionWheel = selectedPart.GetModule<ModuleReactionWheel>();
if (moduleReactionWheel != null) if (moduleReactionWheel != null)
{ {
infoItems.Add(PartInfoItem.Create("Reaction Wheel Torque")); infoItems.Add(PartInfoItem.Create("Reaction Wheel Torque"));
infoItems.Add(PartInfoItem.Create("\tPitch", moduleReactionWheel.PitchTorque.ToTorque())); infoItems.Add(PartInfoItem.Create("\tPitch", moduleReactionWheel.PitchTorque.ToTorque()));
infoItems.Add(PartInfoItem.Create("\tRoll", moduleReactionWheel.RollTorque.ToTorque())); infoItems.Add(PartInfoItem.Create("\tRoll", moduleReactionWheel.RollTorque.ToTorque()));
infoItems.Add(PartInfoItem.Create("\tYaw", moduleReactionWheel.YawTorque.ToTorque())); infoItems.Add(PartInfoItem.Create("\tYaw", moduleReactionWheel.YawTorque.ToTorque()));
for (int i = 0; i < moduleReactionWheel.inputResources.Count; ++i) for (int i = 0; i < moduleReactionWheel.inputResources.Count; ++i)
{ {
moduleResource = moduleReactionWheel.inputResources[i]; moduleResource = moduleReactionWheel.inputResources[i];
infoItems.Add(PartInfoItem.Create("\t" + moduleResource.name, moduleResource.rate.ToRate())); infoItems.Add(PartInfoItem.Create("\t" + moduleResource.name, moduleResource.rate.ToRate()));
} }
} }
} }
   
private void SetResourceItems() private void SetResourceItems()
{ {
bool visibleResources = false; bool visibleResources = false;
for (int i = 0; i < selectedPart.Resources.list.Count; ++i) for (int i = 0; i < selectedPart.Resources.list.Count; ++i)
{ {
if (selectedPart.Resources.list[i].hideFlow == false) if (selectedPart.Resources.list[i].hideFlow == false)
{ {
visibleResources = true; visibleResources = true;
break; break;
} }
} }
if (visibleResources) if (visibleResources)
{ {
infoItems.Add(PartInfoItem.Create("Resources")); infoItems.Add(PartInfoItem.Create("Resources"));
for (int i = 0; i < selectedPart.Resources.list.Count; ++i) for (int i = 0; i < selectedPart.Resources.list.Count; ++i)
{ {
partResource = selectedPart.Resources.list[i]; partResource = selectedPart.Resources.list[i];
   
if (partResource.hideFlow == false) if (partResource.hideFlow == false)
{ {
infoItems.Add(partResource.GetDensity() > 0 infoItems.Add(partResource.GetDensity() > 0
? PartInfoItem.Create("\t" + partResource.info.name, "(" + partResource.GetMass().ToMass() + ") " + partResource.amount.ToString("F1")) ? PartInfoItem.Create("\t" + partResource.info.name, "(" + partResource.GetMass().ToMass() + ") " + partResource.amount.ToString("F1"))
: PartInfoItem.Create("\t" + partResource.info.name, partResource.amount.ToString("F1"))); : PartInfoItem.Create("\t" + partResource.info.name, partResource.amount.ToString("F1")));
} }
} }
} }
} }
   
private void SetSasInfo() private void SetSasInfo()
{ {
if (selectedPart.HasModule<ModuleSAS>()) if (selectedPart.HasModule<ModuleSAS>())
{ {
infoItems.Add(PartInfoItem.Create("SAS Equiped")); infoItems.Add(PartInfoItem.Create("SAS Equiped"));
} }
} }
   
private void SetScienceContainerInfo() private void SetScienceContainerInfo()
{ {
if (selectedPart.HasModule<ModuleScienceContainer>()) if (selectedPart.HasModule<ModuleScienceContainer>())
{ {
infoItems.Add(PartInfoItem.Create("Science Container")); infoItems.Add(PartInfoItem.Create("Science Container"));
} }
} }
   
private void SetScienceExperimentInfo() private void SetScienceExperimentInfo()
{ {
moduleScienceExperiment = selectedPart.GetModule<ModuleScienceExperiment>(); moduleScienceExperiment = selectedPart.GetModule<ModuleScienceExperiment>();
if (moduleScienceExperiment != null) if (moduleScienceExperiment != null)
{ {
infoItems.Add(PartInfoItem.Create("Science Experiment", moduleScienceExperiment.experimentActionName)); infoItems.Add(PartInfoItem.Create("Science Experiment", moduleScienceExperiment.experimentActionName));
infoItems.Add(PartInfoItem.Create("\tTransmit Efficiency", moduleScienceExperiment.xmitDataScalar.ToPercent())); infoItems.Add(PartInfoItem.Create("\tTransmit Efficiency", moduleScienceExperiment.xmitDataScalar.ToPercent()));
if (moduleScienceExperiment.rerunnable == false) if (moduleScienceExperiment.rerunnable == false)
{ {
infoItems.Add(PartInfoItem.Create("\tSingle Usage")); infoItems.Add(PartInfoItem.Create("\tSingle Usage"));
} }
} }
} }
   
private void SetSingleActivationInfo() private void SetSingleActivationInfo()
{ {
if (selectedPart.HasModule<ModuleAnimateGeneric>(m => m.isOneShot)) if (selectedPart.HasModule<ModuleAnimateGeneric>(m => m.isOneShot))
{ {
infoItems.Add(PartInfoItem.Create("Single Activation")); infoItems.Add(PartInfoItem.Create("Single Activation"));
} }
} }
   
private void SetSolarPanelInfo() private void SetSolarPanelInfo()
{ {
moduleDeployableSolarPanel = selectedPart.GetModule<ModuleDeployableSolarPanel>(); moduleDeployableSolarPanel = selectedPart.GetModule<ModuleDeployableSolarPanel>();
if (moduleDeployableSolarPanel != null) if (moduleDeployableSolarPanel != null)
{ {
infoItems.Add(PartInfoItem.Create("Charge Rate", moduleDeployableSolarPanel.chargeRate.ToRate())); infoItems.Add(PartInfoItem.Create("Charge Rate", moduleDeployableSolarPanel.chargeRate.ToRate()));
if (moduleDeployableSolarPanel.isBreakable) if (moduleDeployableSolarPanel.isBreakable)
{ {
infoItems.Add(PartInfoItem.Create("Breakable")); infoItems.Add(PartInfoItem.Create("Breakable"));
} }
if (moduleDeployableSolarPanel.sunTracking) if (moduleDeployableSolarPanel.sunTracking)
{ {
infoItems.Add(PartInfoItem.Create("Sun Tracking")); infoItems.Add(PartInfoItem.Create("Sun Tracking"));
} }
} }
} }
   
private void SetTransmitterInfo() private void SetTransmitterInfo()
{ {
moduleDataTransmitter = selectedPart.GetModule<ModuleDataTransmitter>(); moduleDataTransmitter = selectedPart.GetModule<ModuleDataTransmitter>();
if (moduleDataTransmitter != null) if (moduleDataTransmitter != null)
{ {
infoItems.Add(PartInfoItem.Create("Packet Size", moduleDataTransmitter.packetSize.ToString("F2") + " Mits")); infoItems.Add(PartInfoItem.Create("Packet Size", moduleDataTransmitter.packetSize.ToString("F2") + " Mits"));
infoItems.Add(PartInfoItem.Create("Bandwidth", (moduleDataTransmitter.packetInterval * moduleDataTransmitter.packetSize).ToString("F2") + "Mits/sec")); infoItems.Add(PartInfoItem.Create("Bandwidth", (moduleDataTransmitter.packetInterval * moduleDataTransmitter.packetSize).ToString("F2") + "Mits/sec"));
infoItems.Add(PartInfoItem.Create(moduleDataTransmitter.requiredResource, moduleDataTransmitter.packetResourceCost.ToString("F2") + "/Packet")); infoItems.Add(PartInfoItem.Create(moduleDataTransmitter.requiredResource, moduleDataTransmitter.packetResourceCost.ToString("F2") + "/Packet"));
} }
} }
   
private void Window(int windowId) private void Window(int windowId)
{ {
try try
{ {
GUILayout.Label(selectedPart.partInfo.title, BuildOverlay.TitleStyle); GUILayout.Label(selectedPart.partInfo.title, BuildOverlay.TitleStyle);
if (showInfo) if (showInfo)
{ {
for (int i = 0; i < infoItems.Count; ++i) for (int i = 0; i < infoItems.Count; ++i)
{ {
partInfoItem = infoItems[i]; partInfoItem = infoItems[i];
GUILayout.Space(2.0f); GUILayout.Space(2.0f);
GUILayout.BeginHorizontal(); GUILayout.BeginHorizontal();
if (partInfoItem.Value != null) if (partInfoItem.Value != null)
{ {
GUILayout.Label(partInfoItem.Name + ":", BuildOverlay.NameStyle); GUILayout.Label(partInfoItem.Name + ":", BuildOverlay.NameStyle);
GUILayout.Space(25.0f); GUILayout.Space(25.0f);
GUILayout.Label(partInfoItem.Value, BuildOverlay.ValueStyle); GUILayout.Label(partInfoItem.Value, BuildOverlay.ValueStyle);
} }
else else
{ {
GUILayout.Label(partInfoItem.Name, BuildOverlay.NameStyle); GUILayout.Label(partInfoItem.Name, BuildOverlay.NameStyle);
} }
GUILayout.EndHorizontal(); GUILayout.EndHorizontal();
} }
} }
else if (clickToOpen && namesOnly == false) else if (clickToOpen && namesOnly == false)
{ {
GUILayout.Space(2.0f); GUILayout.Space(2.0f);
GUILayout.Label("Click middle mouse to show more info...", BuildOverlay.NameStyle); GUILayout.Label("Click middle mouse to show more info...", BuildOverlay.NameStyle);
} }
} }
catch (Exception ex) catch (Exception ex)
{ {
Logger.Exception(ex); Logger.Exception(ex);
} }
} }
} }
} }
//  
// 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 System;  
 
using UnityEngine;  
 
#endregion  
 
namespace KerbalEngineer.Editor  
{  
[KSPAddon(KSPAddon.Startup.EditorAny, false)]  
public class BuildToolbar : MonoBehaviour  
{  
#region Fields  
 
private ApplicationLauncherButton button;  
 
#endregion  
 
#region Methods: private  
 
private void Awake()  
{  
GameEvents.onGUIApplicationLauncherReady.Add(this.OnGuiAppLauncherReady);  
Logger.Log("BuildToolbar->Awake");  
}  
 
private void Start()  
{  
if (button == null)  
{  
OnGuiAppLauncherReady();  
}  
}  
 
private void OnDestroy()  
{  
GameEvents.onGUIApplicationLauncherReady.Remove(this.OnGuiAppLauncherReady);  
if (this.button != null)  
{  
ApplicationLauncher.Instance.RemoveModApplication(this.button);  
}  
Logger.Log("BuildToolbar->OnDestroy");  
}  
 
private void OnGuiAppLauncherReady()  
{  
try  
{  
this.button = ApplicationLauncher.Instance.AddModApplication(  
() => BuildAdvanced.Instance.Visible = true,  
() => BuildAdvanced.Instance.Visible = false,  
null,  
null,  
null,  
null,  
ApplicationLauncher.AppScenes.ALWAYS,  
GameDatabase.Instance.GetTexture("KerbalEngineer/Textures/ToolbarIcon", false)  
);  
Logger.Log("BuildToolbar->OnGuiAppLauncherReady");  
}  
catch (Exception ex)  
{  
Logger.Exception(ex, "BuildToolbar->OnGuiAppLauncherReady");  
}  
}  
 
private void Update()  
{  
try  
{  
if (this.button == null)  
{  
return;  
}  
 
if (EditorLogic.fetch != null && EditorLogic.fetch.ship.parts.Count > 0)  
{  
if (BuildAdvanced.Instance.Visible && this.button.State != RUIToggleButton.ButtonState.TRUE)  
{  
this.button.SetTrue();  
}  
else if (!BuildAdvanced.Instance.Visible && this.button.State != RUIToggleButton.ButtonState.FALSE)  
{  
this.button.SetFalse();  
}  
}  
else if (this.button.State != RUIToggleButton.ButtonState.DISABLED)  
{  
this.button.Disable();  
}  
}  
catch (Exception ex)  
{  
Logger.Exception(ex, "BuildToolbar->Update");  
}  
}  
 
#endregion  
}  
}  
// //
// Kerbal Engineer Redux // Kerbal Engineer Redux
// //
// Copyright (C) 2014 CYBUTEK // Copyright (C) 2014 CYBUTEK
// //
// This program is free software: you can redistribute it and/or modify // 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 // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// //
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
// //
   
#region Using Directives #region Using Directives
   
using System; using System;
   
using UnityEngine; using UnityEngine;
   
#endregion #endregion
   
namespace KerbalEngineer.Flight namespace KerbalEngineer.Flight
{ {
  using KSP.UI.Screens;
   
/// <summary> /// <summary>
/// Graphical controller for section interaction in the form of a menu system. /// Graphical controller for section interaction in the form of a menu system.
/// </summary> /// </summary>
[KSPAddon(KSPAddon.Startup.Flight, false)] //[KSPAddon(KSPAddon.Startup.Flight, false)]
public class ActionMenu : MonoBehaviour public class ActionMenu : MonoBehaviour
{ {
#region Fields #region Fields
   
private ActionMenuGui actionMenuGui; private ActionMenuGui actionMenuGui;
private ApplicationLauncherButton button; private ApplicationLauncherButton button;
   
#endregion #endregion
   
#region Methods: protected #region Methods: protected
   
protected void Awake() protected void Awake()
{ {
try try
{ {
GameEvents.onGUIApplicationLauncherReady.Add(this.OnGuiAppLauncherReady); GameEvents.onGUIApplicationLauncherReady.Add(this.OnGuiAppLauncherReady);
} }
catch (Exception ex) catch (Exception ex)
{ {
Logger.Exception(ex); Logger.Exception(ex);
} }
Logger.Log("ActionMenu was created."); Logger.Log("ActionMenu was created.");
} }
   
protected void Start() protected void Start()
{ {
if (button == null) if (button == null)
{ {
OnGuiAppLauncherReady(); OnGuiAppLauncherReady();
} }
} }
   
protected void OnDestroy() protected void OnDestroy()
{ {
try try
{ {
GameEvents.onGUIApplicationLauncherReady.Remove(this.OnGuiAppLauncherReady); GameEvents.onGUIApplicationLauncherReady.Remove(this.OnGuiAppLauncherReady);
GameEvents.onHideUI.Remove(this.OnHide); GameEvents.onHideUI.Remove(this.OnHide);
GameEvents.onShowUI.Remove(this.OnShow); GameEvents.onShowUI.Remove(this.OnShow);
if (button != null) if (button != null)
{ {
ApplicationLauncher.Instance.RemoveModApplication(this.button); ApplicationLauncher.Instance.RemoveModApplication(this.button);
} }
} }
catch (Exception ex) catch (Exception ex)
{ {
Logger.Exception(ex); Logger.Exception(ex);
} }
Logger.Log("ActionMenu was destroyed."); Logger.Log("ActionMenu was destroyed.");
} }
   
protected void Update() protected void Update()
{ {
try try
{ {
if (this.button == null) if (this.button == null)
{ {
return; return;
} }
if (FlightEngineerCore.IsDisplayable && this.button.State == RUIToggleButton.ButtonState.DISABLED) if (FlightEngineerCore.IsDisplayable && this.button.toggleButton.Interactable == false)
{ {
this.button.Enable(); this.button.Enable();
} }
else if (!FlightEngineerCore.IsDisplayable && this.button.State != RUIToggleButton.ButtonState.DISABLED) else if (!FlightEngineerCore.IsDisplayable && this.button.toggleButton.Interactable)
{ {
this.button.Disable(); this.button.Disable();
} }
} }
catch (Exception ex) catch (Exception ex)
{ {
Logger.Exception(ex); Logger.Exception(ex);
} }
} }
   
#endregion #endregion
   
#region Methods: private #region Methods: private
   
private void OnFalse() private void OnFalse()
{ {
try try
{ {
this.actionMenuGui.enabled = false; this.actionMenuGui.enabled = false;
this.actionMenuGui.StayOpen = false; this.actionMenuGui.StayOpen = false;
} }
catch (Exception ex) catch (Exception ex)
{ {
Logger.Exception(ex); Logger.Exception(ex);
} }
} }
   
private void OnGuiAppLauncherReady() private void OnGuiAppLauncherReady()
{ {
try try
{ {
this.button = ApplicationLauncher.Instance.AddModApplication( this.button = ApplicationLauncher.Instance.AddModApplication(
this.OnTrue, this.OnTrue,
this.OnFalse, this.OnFalse,
this.OnHover, this.OnHover,
this.OnHoverOut, this.OnHoverOut,
null, null,
null, null,
ApplicationLauncher.AppScenes.ALWAYS, ApplicationLauncher.AppScenes.ALWAYS,
GameDatabase.Instance.GetTexture("KerbalEngineer/Textures/ToolbarIcon", false)); GameDatabase.Instance.GetTexture("KerbalEngineer/Textures/ToolbarIcon", false));
this.actionMenuGui = this.button.gameObject.AddComponent<ActionMenuGui>(); this.actionMenuGui = this.button.gameObject.AddComponent<ActionMenuGui>();
this.actionMenuGui.transform.parent = this.button.transform; this.actionMenuGui.transform.parent = this.button.transform;
ApplicationLauncher.Instance.EnableMutuallyExclusive(this.button); ApplicationLauncher.Instance.EnableMutuallyExclusive(this.button);
GameEvents.onHideUI.Add(this.OnHide); GameEvents.onHideUI.Add(this.OnHide);
GameEvents.onShowUI.Add(this.OnShow); GameEvents.onShowUI.Add(this.OnShow);
} }
catch (Exception ex) catch (Exception ex)
{ {
Logger.Exception(ex); Logger.Exception(ex);
} }
} }
   
private void OnHide() private void OnHide()
{ {
try try
{ {
this.actionMenuGui.Hidden = true; this.actionMenuGui.Hidden = true;
} }
catch (Exception ex) catch (Exception ex)
{ {
Logger.Exception(ex); Logger.Exception(ex);
} }
} }
   
private void OnHover() private void OnHover()
{ {
try try
{ {
this.actionMenuGui.enabled = true; this.actionMenuGui.enabled = true;
this.actionMenuGui.Hovering = true; this.actionMenuGui.Hovering = true;
} }
catch (Exception ex) catch (Exception ex)
{ {
Logger.Exception(ex); Logger.Exception(ex);
} }
} }
   
private void OnHoverOut() private void OnHoverOut()
{ {
try try
{ {
this.actionMenuGui.Hovering = false; this.actionMenuGui.Hovering = false;
} }
catch (Exception ex) catch (Exception ex)
{ {
Logger.Exception(ex); Logger.Exception(ex);
} }
} }
   
private void OnShow() private void OnShow()
{ {
try try
{ {
this.actionMenuGui.Hidden = false; this.actionMenuGui.Hidden = false;
} }
catch (Exception ex) catch (Exception ex)
{ {
Logger.Exception(ex); Logger.Exception(ex);
} }
} }
   
private void OnTrue() private void OnTrue()
{ {
try try
{ {
this.actionMenuGui.enabled = true; this.actionMenuGui.enabled = true;
this.actionMenuGui.StayOpen = true; this.actionMenuGui.StayOpen = true;
} }
catch (Exception ex) catch (Exception ex)
{ {
Logger.Exception(ex); Logger.Exception(ex);
} }
} }
   
#endregion #endregion
} }
} }
  namespace KerbalEngineer.Flight
  {
  using UnityEngine;
 
  [KSPAddon(KSPAddon.Startup.Flight, false)]
  public class FlightAppLauncher : AppLauncherButton
  {
  private GameObject m_MenuObject;
  private GameObject m_MenuPrefab;
 
  protected override void Awake()
  {
  base.Awake();
 
  if (m_MenuPrefab == null && AssetBundleLoader.prefabs != null)
  {
  m_MenuPrefab = AssetBundleLoader.prefabs.LoadAsset<GameObject>("flight-menu");
  }
  }
 
  protected override void OnFalse()
  {
  if (m_MenuObject == null)
  {
  return;
  }
 
  Destroy(m_MenuObject);
  }
 
  protected override void OnTrue()
  {
  if (m_MenuPrefab == null)
  {
  return;
  }
 
  m_MenuObject = Instantiate(m_MenuPrefab, GetAnchor(), Quaternion.identity) as GameObject;
  if (m_MenuObject == null)
  {
  return;
  }
 
  m_MenuObject.transform.SetParent(MainCanvasUtil.MainCanvas.transform);
  }
  }
  }
// //
// Copyright (C) 2015 CYBUTEK // Copyright (C) 2015 CYBUTEK
// //
// This program is free software: you can redistribute it and/or modify // 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 // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// //
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
// //
   
namespace KerbalEngineer.Helpers namespace KerbalEngineer.Helpers
{ {
public static class TimeFormatter public static class TimeFormatter
{ {
public static string ConvertToString(double seconds, string format = "F1") public static string ConvertToString(double seconds, string format = "F1")
{ {
int years = 0; int years = 0;
int days = 0; int days = 0;
int hours = 0; int hours = 0;
int minutes = 0; int minutes = 0;
   
if (seconds > 0.0) if (seconds > 0.0)
{ {
years = (int)(seconds / KSPUtil.Year); years = (int)(seconds / KSPUtil.dateTimeFormatter.Year);
seconds -= years * KSPUtil.Year; seconds -= years * KSPUtil.dateTimeFormatter.Year;
   
days = (int)(seconds / KSPUtil.Day); days = (int)(seconds / KSPUtil.dateTimeFormatter.Day);
seconds -= days * KSPUtil.Day; seconds -= days * KSPUtil.dateTimeFormatter.Day;
   
hours = (int)(seconds / 3600.0); hours = (int)(seconds / 3600.0);
seconds -= hours * 3600.0; seconds -= hours * 3600.0;
   
minutes = (int)(seconds / 60.0); minutes = (int)(seconds / 60.0);
seconds -= minutes * 60.0; seconds -= minutes * 60.0;
} }
   
if (years > 0) if (years > 0)
{ {
return string.Format("{0}y {1}d {2}h {3}m {4}s", years, days, hours, minutes, seconds.ToString(format)); return string.Format("{0}y {1}d {2}h {3}m {4}s", years, days, hours, minutes, seconds.ToString(format));
} }
if (days > 0) if (days > 0)
{ {
return string.Format("{0}d {1}h {2}m {3}s", days, hours, minutes, seconds.ToString(format)); return string.Format("{0}d {1}h {2}m {3}s", days, hours, minutes, seconds.ToString(format));
} }
if (hours > 0) if (hours > 0)
{ {
return string.Format("{0}h {1}m {2}s", hours, minutes, seconds.ToString(format)); return string.Format("{0}h {1}m {2}s", hours, minutes, seconds.ToString(format));
} }
   
return minutes > 0 ? string.Format("{0}m {1}s", minutes, seconds.ToString(format)) : string.Format("{0}s", seconds.ToString(format)); return minutes > 0 ? string.Format("{0}m {1}s", minutes, seconds.ToString(format)) : string.Format("{0}s", seconds.ToString(format));
} }
} }
} }
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup> <PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{39806613-E0B7-46E0-89A6-A569EC538CBB}</ProjectGuid> <ProjectGuid>{39806613-E0B7-46E0-89A6-A569EC538CBB}</ProjectGuid>
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>KerbalEngineer</RootNamespace> <RootNamespace>KerbalEngineer</RootNamespace>
<AssemblyName>KerbalEngineer</AssemblyName> <AssemblyName>KerbalEngineer</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion> <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>false</DebugSymbols> <DebugSymbols>false</DebugSymbols>
<DebugType>none</DebugType> <DebugType>none</DebugType>
<Optimize>false</Optimize> <Optimize>false</Optimize>
<OutputPath>..\Output\KerbalEngineer\</OutputPath> <OutputPath>..\Output\KerbalEngineer\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants> <DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<UseVSHostingProcess>false</UseVSHostingProcess> <UseVSHostingProcess>false</UseVSHostingProcess>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>none</DebugType> <DebugType>none</DebugType>
<Optimize>true</Optimize> <Optimize>true</Optimize>
<OutputPath>..\Output\KerbalEngineer\</OutputPath> <OutputPath>..\Output\KerbalEngineer\</OutputPath>
<DefineConstants> <DefineConstants>
</DefineConstants> </DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<UseVSHostingProcess>false</UseVSHostingProcess> <UseVSHostingProcess>false</UseVSHostingProcess>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks> <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
  <Compile Include="AppLauncherButton.cs" />
  <Compile Include="AssetBundleLoader.cs" />
<Compile Include="Control\IControlPanel.cs" /> <Compile Include="Control\IControlPanel.cs" />
<Compile Include="Control\Panels\BuildOverlayPanel.cs" /> <Compile Include="Control\Panels\BuildOverlayPanel.cs" />
<Compile Include="Control\Panels\BuildEngineerPanel.cs" /> <Compile Include="Control\Panels\BuildEngineerPanel.cs" />
<Compile Include="Editor\BuildAdvanced.cs" /> <Compile Include="Editor\BuildAdvanced.cs" />
  <Compile Include="Editor\BuildAppLauncher.cs" />
<Compile Include="Editor\BuildOverlay.cs" /> <Compile Include="Editor\BuildOverlay.cs" />
<Compile Include="CelestialBodies.cs" /> <Compile Include="CelestialBodies.cs" />
<Compile Include="Editor\BuildOverlayPartInfo.cs" /> <Compile Include="Editor\BuildOverlayPartInfo.cs" />
<Compile Include="Editor\BuildOverlayResources.cs" /> <Compile Include="Editor\BuildOverlayResources.cs" />
<Compile Include="Editor\BuildOverlayVessel.cs" /> <Compile Include="Editor\BuildOverlayVessel.cs" />
<Compile Include="Editor\BuildToolbar.cs" />  
<Compile Include="Editor\PartInfoItem.cs" /> <Compile Include="Editor\PartInfoItem.cs" />
<Compile Include="Editor\ResourceInfoItem.cs" /> <Compile Include="Editor\ResourceInfoItem.cs" />
<Compile Include="Extensions\FloatExtensions.cs" /> <Compile Include="Extensions\FloatExtensions.cs" />
<Compile Include="Extensions\OrbitExtensions.cs" /> <Compile Include="Extensions\OrbitExtensions.cs" />
<Compile Include="Extensions\StringExtensions.cs" /> <Compile Include="Extensions\StringExtensions.cs" />
<Compile Include="Flight\ActionMenuGui.cs" /> <Compile Include="Flight\ActionMenuGui.cs" />
  <Compile Include="Flight\FlightAppLauncher.cs" />
<Compile Include="Flight\Presets\Preset.cs" /> <Compile Include="Flight\Presets\Preset.cs" />
<Compile Include="Flight\Readouts\Miscellaneous\SystemTime.cs" /> <Compile Include="Flight\Readouts\Miscellaneous\SystemTime.cs" />
<Compile Include="Flight\Readouts\Miscellaneous\VectoredThrustToggle.cs" /> <Compile Include="Flight\Readouts\Miscellaneous\VectoredThrustToggle.cs" />
<Compile Include="Flight\Readouts\Miscellaneous\Separator.cs" /> <Compile Include="Flight\Readouts\Miscellaneous\Separator.cs" />
<Compile Include="Flight\Readouts\Miscellaneous\GuiSizeAdjustor.cs" /> <Compile Include="Flight\Readouts\Miscellaneous\GuiSizeAdjustor.cs" />
<Compile Include="Flight\Readouts\Orbital\AngleToEquatorialDescendingNode.cs" /> <Compile Include="Flight\Readouts\Orbital\AngleToEquatorialDescendingNode.cs" />
<Compile Include="Flight\Readouts\Orbital\AngleToEquatorialAscendingNode.cs" /> <Compile Include="Flight\Readouts\Orbital\AngleToEquatorialAscendingNode.cs" />
<Compile Include="Flight\Readouts\Orbital\AngleToRetrograde.cs" /> <Compile Include="Flight\Readouts\Orbital\AngleToRetrograde.cs" />
<Compile Include="Flight\Readouts\Orbital\AngleToPrograde.cs" /> <Compile Include="Flight\Readouts\Orbital\AngleToPrograde.cs" />
<Compile Include="Flight\Readouts\Orbital\ManoeuvreNode\NodeRadialDeltaV.cs" /> <Compile Include="Flight\Readouts\Orbital\ManoeuvreNode\NodeRadialDeltaV.cs" />
<Compile Include="Flight\Readouts\Orbital\ManoeuvreNode\ManoeuvreProcessor.cs" /> <Compile Include="Flight\Readouts\Orbital\ManoeuvreNode\ManoeuvreProcessor.cs" />
<Compile Include="Flight\Readouts\Orbital\ManoeuvreNode\NodeTimeToHalfBurn.cs" /> <Compile Include="Flight\Readouts\Orbital\ManoeuvreNode\NodeTimeToHalfBurn.cs" />
<Compile Include="Flight\Readouts\Orbital\ManoeuvreNode\NodeTimeToManoeuvre.cs" /> <Compile Include="Flight\Readouts\Orbital\ManoeuvreNode\NodeTimeToManoeuvre.cs" />
<Compile Include="Flight\Readouts\Orbital\ManoeuvreNode\NodeHalfBurnTime.cs" /> <Compile Include="Flight\Readouts\Orbital\ManoeuvreNode\NodeHalfBurnTime.cs" />
<Compile Include="Flight\Readouts\Orbital\ManoeuvreNode\NodeBurnTime.cs" /> <Compile Include="Flight\Readouts\Orbital\ManoeuvreNode\NodeBurnTime.cs" />
<Compile Include="Flight\Readouts\Orbital\ManoeuvreNode\NodeAngleToRetrograde.cs" /> <Compile Include="Flight\Readouts\Orbital\ManoeuvreNode\NodeAngleToRetrograde.cs" />
<Compile Include="Flight\Readouts\Orbital\ManoeuvreNode\NodeNormalDeltaV.cs" /> <Compile Include="Flight\Readouts\Orbital\ManoeuvreNode\NodeNormalDeltaV.cs" />
<Compile Include="Flight\Readouts\Orbital\ManoeuvreNode\NodeAngleToPrograde.cs" /> <Compile Include="Flight\Readouts\Orbital\ManoeuvreNode\NodeAngleToPrograde.cs" />
<Compile Include="Flight\Readouts\Orbital\ManoeuvreNode\NodeTotalDeltaV.cs" /> <Compile Include="Flight\Readouts\Orbital\ManoeuvreNode\NodeTotalDeltaV.cs" />
<Compile Include="Flight\Readouts\Orbital\ManoeuvreNode\NodeProgradeDeltaV.cs" /> <Compile Include="Flight\Readouts\Orbital\ManoeuvreNode\NodeProgradeDeltaV.cs" />
<Compile Include="Flight\Readouts\Orbital\ManoeuvreNode\PostBurnApoapsis.cs" /> <Compile Include="Flight\Readouts\Orbital\ManoeuvreNode\PostBurnApoapsis.cs" />
<Compile Include="Flight\Readouts\Orbital\ManoeuvreNode\PostBurnPeriapsis.cs" /> <Compile Include="Flight\Readouts\Orbital\ManoeuvreNode\PostBurnPeriapsis.cs" />
<Compile Include="Flight\Readouts\Orbital\MeanAnomalyAtEpoc.cs" /> <Compile Include="Flight\Readouts\Orbital\MeanAnomalyAtEpoc.cs" />
<Compile Include="Flight\Readouts\Orbital\MeanAnomaly.cs" /> <Compile Include="Flight\Readouts\Orbital\MeanAnomaly.cs" />
<Compile Include="Flight\Readouts\Orbital\EccentricAnomaly.cs" /> <Compile Include="Flight\Readouts\Orbital\EccentricAnomaly.cs" />
<Compile Include="Flight\Readouts\Orbital\ArgumentOfPeriapsis.cs" /> <Compile Include="Flight\Readouts\Orbital\ArgumentOfPeriapsis.cs" />
<Compile Include="Flight\Readouts\Orbital\CurrentSoi.cs" /> <Compile Include="Flight\Readouts\Orbital\CurrentSoi.cs" />
<Compile Include="Flight\Readouts\Orbital\SemiMajorAxis.cs"> <Compile Include="Flight\Readouts\Orbital\SemiMajorAxis.cs">
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<Compile Include="Flight\Readouts\Orbital\SpeedAtApoapsis.cs" /> <Compile Include="Flight\Readouts\Orbital\SpeedAtApoapsis.cs" />
<Compile Include="Flight\Readouts\Orbital\SpeedAtPeriapsis.cs"> <Compile Include="Flight\Readouts\Orbital\SpeedAtPeriapsis.cs">
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<Compile Include="Flight\Readouts\Orbital\TimeToAtmosphere.cs" /> <Compile Include="Flight\Readouts\Orbital\TimeToAtmosphere.cs" />
<Compile Include="Flight\Readouts\Orbital\TrueAnomaly.cs" /> <Compile Include="Flight\Readouts\Orbital\TrueAnomaly.cs" />
<Compile Include="Flight\Readouts\Orbital\TimeToEquatorialAscendingNode.cs" /> <Compile Include="Flight\Readouts\Orbital\TimeToEquatorialAscendingNode.cs" />
<Compile Include="Flight\Readouts\Orbital\TimeToEquatorialDescendingNode.cs" /> <Compile Include="Flight\Readouts\Orbital\TimeToEquatorialDescendingNode.cs" />
<Compile Include="Flight\Readouts\Rendezvous\RelativeSpeed.cs" /> <Compile Include="Flight\Readouts\Rendezvous\RelativeSpeed.cs" />
<Compile Include="Flight\Readouts\Rendezvous\RelativeVelocity.cs" /> <Compile Include="Flight\Readouts\Rendezvous\RelativeVelocity.cs" />
<Compile Include="Flight\Readouts\Rendezvous\SemiMinorAxis.cs" /> <Compile Include="Flight\Readouts\Rendezvous\SemiMinorAxis.cs" />
<Compile Include="Flight\Readouts\Rendezvous\SemiMajorAxis.cs" /> <Compile Include="Flight\Readouts\Rendezvous\SemiMajorAxis.cs" />
<Compile Include="Flight\Readouts\Rendezvous\TimeToRelativeDescendingNode.cs" /> <Compile Include="Flight\Readouts\Rendezvous\TimeToRelativeDescendingNode.cs" />
<Compile Include="Flight\Readouts\Rendezvous\TimeToRelativeAscendingNode.cs" /> <Compile Include="Flight\Readouts\Rendezvous\TimeToRelativeAscendingNode.cs" />
<Compile Include="Flight\Readouts\Surface\ImpactBiome.cs" /> <Compile Include="Flight\Readouts\Surface\ImpactBiome.cs" />
<Compile Include="Flight\Readouts\Surface\Slope.cs" /> <Compile Include="Flight\Readouts\Surface\Slope.cs" />
<Compile Include="Flight\Readouts\Surface\Biome.cs" /> <Compile Include="Flight\Readouts\Surface\Biome.cs" />
<Compile Include="Flight\Readouts\Surface\HorizontalAcceleration.cs" /> <Compile Include="Flight\Readouts\Surface\HorizontalAcceleration.cs" />
<Compile Include="Flight\Readouts\Surface\VerticalAcceleration.cs" /> <Compile Include="Flight\Readouts\Surface\VerticalAcceleration.cs" />
<Compile Include="Flight\Readouts\Surface\MachNumber.cs" /> <Compile Include="Flight\Readouts\Surface\MachNumber.cs" />
<Compile Include="Flight\Readouts\Thermal\CoolestSkinTemperature.cs" /> <Compile Include="Flight\Readouts\Thermal\CoolestSkinTemperature.cs" />
<Compile Include="Flight\Readouts\Thermal\CriticalPart.cs" /> <Compile Include="Flight\Readouts\Thermal\CriticalPart.cs" />
<Compile Include="Flight\Readouts\Thermal\CoolestPart.cs" /> <Compile Include="Flight\Readouts\Thermal\CoolestPart.cs" />
<Compile Include="Flight\Readouts\Thermal\CoolestTemperature.cs" /> <Compile Include="Flight\Readouts\Thermal\CoolestTemperature.cs" />
<Compile Include="Flight\Readouts\Thermal\CriticalThermalPercentage.cs" /> <Compile Include="Flight\Readouts\Thermal\CriticalThermalPercentage.cs" />
<Compile Include="Flight\Readouts\Thermal\CriticalSkinTemperature.cs" /> <Compile Include="Flight\Readouts\Thermal\CriticalSkinTemperature.cs" />
<Compile Include="Flight\Readouts\Thermal\CriticalTemperature.cs" /> <Compile Include="Flight\Readouts\Thermal\CriticalTemperature.cs" />
<Compile Include="Flight\Readouts\Thermal\HottestSkinTemperature.cs" /> <Compile Include="Flight\Readouts\Thermal\HottestSkinTemperature.cs" />
<Compile Include="Flight\Readouts\Thermal\InternalFlux.cs" /> <Compile Include="Flight\Readouts\Thermal\InternalFlux.cs" />
<Compile Include="Flight\Readouts\Thermal\RadiationFlux.cs" /> <Compile Include="Flight\Readouts\Thermal\RadiationFlux.cs" />
<Compile Include="Flight\Readouts\Thermal\ConvectionFlux.cs" /> <Compile Include="Flight\Readouts\Thermal\ConvectionFlux.cs" />
<Compile Include="Flight\Readouts\Thermal\HottestTemperature.cs" /> <Compile Include="Flight\Readouts\Thermal\HottestTemperature.cs" />
<Compile Include="Flight\Readouts\Thermal\HottestPart.cs" /> <Compile Include="Flight\Readouts\Thermal\HottestPart.cs" />
<Compile Include="Flight\Readouts\Thermal\ThermalProcessor.cs" /> <Compile Include="Flight\Readouts\Thermal\ThermalProcessor.cs" />
<Compile Include="Flight\Readouts\Vessel\Name.cs" /> <Compile Include="Flight\Readouts\Vessel\Name.cs" />
<Compile Include="Flight\Readouts\Vessel\AttitudeProcessor.cs" /> <Compile Include="Flight\Readouts\Vessel\AttitudeProcessor.cs" />
<Compile Include="Flight\Readouts\Vessel\DeltaVCurrentTotal.cs" /> <Compile Include="Flight\Readouts\Vessel\DeltaVCurrentTotal.cs" />
<Compile Include="Flight\Readouts\Vessel\PitchRate.cs" /> <Compile Include="Flight\Readouts\Vessel\PitchRate.cs" />
<Compile Include="Flight\Readouts\Vessel\HeadingRate.cs" /> <Compile Include="Flight\Readouts\Vessel\HeadingRate.cs" />
<Compile Include="Flight\Readouts\Vessel\RollRate.cs" /> <Compile Include="Flight\Readouts\Vessel\RollRate.cs" />
<Compile Include="Flight\Readouts\Vessel\Roll.cs" /> <Compile Include="Flight\Readouts\Vessel\Roll.cs" />
<Compile Include="Flight\Readouts\Vessel\Pitch.cs" /> <Compile Include="Flight\Readouts\Vessel\Pitch.cs" />
<Compile Include="Flight\Readouts\Vessel\Heading.cs" /> <Compile Include="Flight\Readouts\Vessel\Heading.cs" />
<Compile Include="Flight\Readouts\Vessel\PartCount.cs" /> <Compile Include="Flight\Readouts\Vessel\PartCount.cs" />
<Compile Include="Flight\Readouts\Vessel\SuicideBurnDeltaV.cs" /> <Compile Include="Flight\Readouts\Vessel\SuicideBurnDeltaV.cs" />
<Compile Include="Flight\Readouts\Vessel\SuicideBurnAltitude.cs" /> <Compile Include="Flight\Readouts\Vessel\SuicideBurnAltitude.cs" />
<Compile Include="Flight\Readouts\Vessel\SuicideBurnDistance.cs" /> <Compile Include="Flight\Readouts\Vessel\SuicideBurnDistance.cs" />
<Compile Include="Flight\Readouts\Vessel\DeltaVCurrent.cs" /> <Compile Include="Flight\Readouts\Vessel\DeltaVCurrent.cs" />
<Compile Include="Flight\Readouts\Vessel\IntakeAirUsage.cs" /> <Compile Include="Flight\Readouts\Vessel\IntakeAirUsage.cs" />
<Compile Include="Flight\Readouts\Vessel\IntakeAirDemandSupply.cs" /> <Compile Include="Flight\Readouts\Vessel\IntakeAirDemandSupply.cs" />
<Compile Include="Flight\Readouts\Vessel\IntakeAirSupply.cs" /> <Compile Include="Flight\Readouts\Vessel\IntakeAirSupply.cs" />
<Compile Include="Flight\Readouts\Vessel\IntakeAirDemand.cs" /> <Compile Include="Flight\Readouts\Vessel\IntakeAirDemand.cs" />
<Compile Include="Flight\Readouts\Miscellaneous\SimulationDelay.cs" /> <Compile Include="Flight\Readouts\Miscellaneous\SimulationDelay.cs" />
<Compile Include="Flight\Readouts\Vessel\SimulationProcessor.cs" /> <Compile Include="Flight\Readouts\Vessel\SimulationProcessor.cs" />
<Compile Include="Flight\Readouts\Vessel\Acceleration.cs" /> <Compile Include="Flight\Readouts\Vessel\Acceleration.cs" />
<Compile Include="Flight\Presets\PresetLibrary.cs" /> <Compile Include="Flight\Presets\PresetLibrary.cs" />
<Compile Include="Flight\Readouts\Vessel\SuicideBurnProcessor.cs" /> <Compile Include="Flight\Readouts\Vessel\SuicideBurnProcessor.cs" />
<Compile Include="Flight\Readouts\Vessel\SurfaceThrustToWeight.cs" /> <Compile Include="Flight\Readouts\Vessel\SurfaceThrustToWeight.cs" />
<Compile Include="Flight\Readouts\Surface\Situation.cs" /> <Compile Include="Flight\Readouts\Surface\Situation.cs" />
<Compile Include="Flight\Readouts\Vessel\ThrustOffsetAngle.cs" /> <Compile Include="Flight\Readouts\Vessel\ThrustOffsetAngle.cs" />
<Compile Include="Flight\Readouts\Vessel\ThrustTorque.cs" /> <Compile Include="Flight\Readouts\Vessel\ThrustTorque.cs" />
<Compile Include="GuiDisplaySize.cs" /> <Compile Include="GuiDisplaySize.cs" />
<Compile Include="Helpers\AngleHelper.cs" /> <Compile Include="Helpers\AngleHelper.cs" />
<Compile Include="Helpers\Averager.cs" /> <Compile Include="Helpers\Averager.cs" />
<Compile Include="Helpers\ForceAccumulator.cs" /> <Compile Include="Helpers\ForceAccumulator.cs" />
<Compile Include="Helpers\TextureHelper.cs" /> <Compile Include="Helpers\TextureHelper.cs" />
<Compile Include="Helpers\Units.cs" /> <Compile Include="Helpers\Units.cs" />
<Compile Include="Helpers\TimeFormatter.cs" /> <Compile Include="Helpers\TimeFormatter.cs" />
<Compile Include="Helpers\XmlHelper.cs" /> <Compile Include="Helpers\XmlHelper.cs" />
<Compile Include="KeyBinding\KeyBinder.cs" /> <Compile Include="KeyBinding\KeyBinder.cs" />
<Compile Include="Control\ControlCentre.cs" /> <Compile Include="Control\ControlCentre.cs" />
<Compile Include="KeyBinding\KeyBindingsObject.cs" /> <Compile Include="KeyBinding\KeyBindingsObject.cs" />
<Compile Include="UIControls\DropDown.cs" /> <Compile Include="UIControls\DropDown.cs" />
<Compile Include="Logger.cs" /> <Compile Include="Logger.cs" />
<Compile Include="EngineerGlobals.cs" /> <Compile Include="EngineerGlobals.cs" />
<Compile Include="Extensions\DoubleExtensions.cs" /> <Compile Include="Extensions\DoubleExtensions.cs" />
<Compile Include="Extensions\PartExtensions.cs" /> <Compile Include="Extensions\PartExtensions.cs" />
<Compile Include="Extensions\PartResourceExtensions.cs" /> <Compile Include="Extensions\PartResourceExtensions.cs" />
<Compile Include="Extensions\RectExtensions.cs" /> <Compile Include="Extensions\RectExtensions.cs" />
<Compile Include="Flight\ActionMenu.cs" /> <Compile Include="Flight\ActionMenu.cs" />
<Compile Include="Flight\DisplayStack.cs" /> <Compile Include="Flight\DisplayStack.cs" />
<Compile Include="Flight\FlightEngineerCore.cs" /> <Compile Include="Flight\FlightEngineerCore.cs" />
<Compile Include="Flight\FlightEngineerModule.cs" /> <Compile Include="Flight\FlightEngineerModule.cs" />
<Compile Include="Flight\IUpdatable.cs" /> <Compile Include="Flight\IUpdatable.cs" />
<Compile Include="Flight\IUpdateRequest.cs" /> <Compile Include="Flight\IUpdateRequest.cs" />
<Compile Include="Flight\Readouts\Orbital\ApoapsisHeight.cs" /> <Compile Include="Flight\Readouts\Orbital\ApoapsisHeight.cs" />
<Compile Include="Flight\Readouts\Orbital\Eccentricity.cs" /> <Compile Include="Flight\Readouts\Orbital\Eccentricity.cs" />
<Compile Include="Flight\Readouts\Orbital\Inclination.cs" /> <Compile Include="Flight\Readouts\Orbital\Inclination.cs" />
<Compile Include="Flight\Readouts\Orbital\LongitudeOfAscendingNode.cs" /> <Compile Include="Flight\Readouts\Orbital\LongitudeOfAscendingNode.cs" />
<Compile Include="Flight\Readouts\Orbital\LongitudeOfPeriapsis.cs" /> <Compile Include="Flight\Readouts\Orbital\LongitudeOfPeriapsis.cs" />
<Compile Include="Flight\Readouts\Orbital\OrbitalPeriod.cs" /> <Compile Include="Flight\Readouts\Orbital\OrbitalPeriod.cs" />
<Compile Include="Flight\Readouts\Orbital\OrbitalSpeed.cs" /> <Compile Include="Flight\Readouts\Orbital\OrbitalSpeed.cs" />
<Compile Include="Flight\Readouts\Orbital\PeriapsisHeight.cs" /> <Compile Include="Flight\Readouts\Orbital\PeriapsisHeight.cs" />
<Compile Include="Flight\Readouts\Orbital\SemiMinorAxis.cs" /> <Compile Include="Flight\Readouts\Orbital\SemiMinorAxis.cs" />
<Compile Include="Flight\Readouts\Orbital\TimeToApoapsis.cs" /> <Compile Include="Flight\Readouts\Orbital\TimeToApoapsis.cs" />
<Compile Include="Flight\Readouts\Orbital\TimeToPeriapsis.cs" /> <Compile Include="Flight\Readouts\Orbital\TimeToPeriapsis.cs" />
<Compile Include="Flight\Readouts\ReadoutCategory.cs" /> <Compile Include="Flight\Readouts\ReadoutCategory.cs" />
<Compile Include="Flight\Readouts\ReadoutLibrary.cs" /> <Compile Include="Flight\Readouts\ReadoutLibrary.cs" />
<Compile Include="Flight\Readouts\ReadoutModule.cs" /> <Compile Include="Flight\Readouts\ReadoutModule.cs" />
<Compile Include="Flight\Readouts\Rendezvous\TimeToPeriapsis.cs" /> <Compile Include="Flight\Readouts\Rendezvous\TimeToPeriapsis.cs" />
<Compile Include="Flight\Readouts\Rendezvous\TimeToApoapsis.cs" /> <Compile Include="Flight\Readouts\Rendezvous\TimeToApoapsis.cs" />
<Compile Include="Flight\Readouts\Rendezvous\PeriapsisHeight.cs" /> <Compile Include="Flight\Readouts\Rendezvous\PeriapsisHeight.cs" />
<Compile Include="Flight\Readouts\Rendezvous\ApoapsisHeight.cs" /> <Compile Include="Flight\Readouts\Rendezvous\ApoapsisHeight.cs" />
<Compile Include="Flight\Readouts\Rendezvous\InterceptAngle.cs" /> <Compile Include="Flight\Readouts\Rendezvous\InterceptAngle.cs" />
<Compile Include="Flight\Readouts\Rendezvous\OrbitalPeriod.cs" /> <Compile Include="Flight\Readouts\Rendezvous\OrbitalPeriod.cs" />
<Compile Include="Flight\Readouts\Rendezvous\Distance.cs" /> <Compile Include="Flight\Readouts\Rendezvous\Distance.cs" />
<Compile Include="Flight\Readouts\Rendezvous\AltitudeSeaLevel.cs" /> <Compile Include="Flight\Readouts\Rendezvous\AltitudeSeaLevel.cs" />
<Compile Include="Flight\Readouts\Rendezvous\AngleToRelativeDescendingNode.cs" /> <Compile Include="Flight\Readouts\Rendezvous\AngleToRelativeDescendingNode.cs" />
<Compile Include="Flight\Readouts\Rendezvous\AngleToRelativeAscendingNode.cs" /> <Compile Include="Flight\Readouts\Rendezvous\AngleToRelativeAscendingNode.cs" />
<Compile Include="Flight\Readouts\Rendezvous\PhaseAngle.cs" /> <Compile Include="Flight\Readouts\Rendezvous\PhaseAngle.cs" />
<Compile Include="Flight\Readouts\Rendezvous\RelativeInclination.cs" /> <Compile Include="Flight\Readouts\Rendezvous\RelativeInclination.cs" />
<Compile Include="Flight\Readouts\Rendezvous\RendezvousProcessor.cs" /> <Compile Include="Flight\Readouts\Rendezvous\RendezvousProcessor.cs" />
<Compile Include="Flight\Readouts\Rendezvous\TargetSelector.cs" /> <Compile Include="Flight\Readouts\Rendezvous\TargetSelector.cs" />
<Compile Include="Flight\Readouts\Surface\AltitudeSeaLevel.cs" /> <Compile Include="Flight\Readouts\Surface\AltitudeSeaLevel.cs" />
<Compile Include="Flight\Readouts\Surface\AltitudeTerrain.cs" /> <Compile Include="Flight\Readouts\Surface\AltitudeTerrain.cs" />
<Compile Include="Flight\Readouts\Surface\ImpactLatitude.cs" /> <Compile Include="Flight\Readouts\Surface\ImpactLatitude.cs" />
<Compile Include="Flight\Readouts\Surface\ImpactAltitude.cs" /> <Compile Include="Flight\Readouts\Surface\ImpactAltitude.cs" />
<Compile Include="Flight\Readouts\Surface\ImpactLongitude.cs" /> <Compile Include="Flight\Readouts\Surface\ImpactLongitude.cs" />
<Compile Include="Flight\Readouts\Surface\ImpactTime.cs" /> <Compile Include="Flight\Readouts\Surface\ImpactTime.cs" />
<Compile Include="Flight\Readouts\Surface\AtmosphericProcessor.cs" /> <Compile Include="Flight\Readouts\Surface\AtmosphericProcessor.cs" />
<Compile Include="Flight\Readouts\Surface\AtmosphericEfficiency.cs" /> <Compile Include="Flight\Readouts\Surface\AtmosphericEfficiency.cs" />
<Compile Include="Flight\Readouts\Surface\GeeForce.cs" /> <Compile Include="Flight\Readouts\Surface\GeeForce.cs" />
<Compile Include="Flight\Readouts\Surface\HorizontalSpeed.cs" /> <Compile Include="Flight\Readouts\Surface\HorizontalSpeed.cs" />
<Compile Include="Flight\Readouts\Surface\ImpactProcessor.cs" /> <Compile Include="Flight\Readouts\Surface\ImpactProcessor.cs" />
<Compile Include="Flight\Readouts\Surface\Latitude.cs" /> <Compile Include="Flight\Readouts\Surface\Latitude.cs" />
<Compile Include="Flight\Readouts\Surface\Longitude.cs" /> <Compile Include="Flight\Readouts\Surface\Longitude.cs" />
<Compile Include="Flight\Readouts\Surface\TerminalVelocity.cs" /> <Compile Include="Flight\Readouts\Surface\TerminalVelocity.cs" />
<Compile Include="Flight\Readouts\Surface\VerticalSpeed.cs" /> <Compile Include="Flight\Readouts\Surface\VerticalSpeed.cs" />
<Compile Include="Flight\Readouts\Vessel\DeltaVStaged.cs" /> <Compile Include="Flight\Readouts\Vessel\DeltaVStaged.cs" />
<Compile Include="Flight\Readouts\Vessel\DeltaVTotal.cs" /> <Compile Include="Flight\Readouts\Vessel\DeltaVTotal.cs" />
<Compile Include="Flight\Readouts\Vessel\Mass.cs" /> <Compile Include="Flight\Readouts\Vessel\Mass.cs" />
<Compile Include="Flight\Readouts\Vessel\Thrust.cs" /> <Compile Include="Flight\Readouts\Vessel\Thrust.cs" />
<Compile Include="Flight\Readouts\Vessel\SpecificImpulse.cs" /> <Compile Include="Flight\Readouts\Vessel\SpecificImpulse.cs" />
<Compile Include="Flight\Readouts\Vessel\ThrustToWeight.cs" /> <Compile Include="Flight\Readouts\Vessel\ThrustToWeight.cs" />
<Compile Include="Flight\Sections\SectionEditor.cs" /> <Compile Include="Flight\Sections\SectionEditor.cs" />
<Compile Include="Flight\Sections\SectionLibrary.cs" /> <Compile Include="Flight\Sections\SectionLibrary.cs" />
<Compile Include="Flight\Sections\SectionModule.cs" /> <Compile Include="Flight\Sections\SectionModule.cs" />
<Compile Include="Flight\Sections\SectionWindow.cs" /> <Compile Include="Flight\Sections\SectionWindow.cs" />
<Compile Include="LogMsg.cs" /> <Compile Include="LogMsg.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Settings\SettingHandler.cs" /> <Compile Include="Settings\SettingHandler.cs" />
<Compile Include="Settings\SettingItem.cs" /> <Compile Include="Settings\SettingItem.cs" />
<Compile Include="TapeDriveAnimator.cs" /> <Compile Include="TapeDriveAnimator.cs" />
<Compile Include="KeyBinding\KeyBindPopup.cs" /> <Compile Include="KeyBinding\KeyBindPopup.cs" />
<Compile Include="UIControls\WindowObject.cs" /> <Compile Include="UIControls\WindowObject.cs" />
<Compile Include="VesselSimulator\AttachNodeSim.cs" /> <Compile Include="VesselSimulator\AttachNodeSim.cs" />
<Compile Include="VesselSimulator\EngineSim.cs" /> <Compile Include="VesselSimulator\EngineSim.cs" />
<Compile Include="Helpers\Pool.cs" /> <Compile Include="Helpers\Pool.cs" />
<Compile Include="VesselSimulator\PartSim.cs" /> <Compile Include="VesselSimulator\PartSim.cs" />
<Compile Include="VesselSimulator\ResourceContainer.cs" /> <Compile Include="VesselSimulator\ResourceContainer.cs" />
<Compile Include="VesselSimulator\SimManager.cs" /> <Compile Include="VesselSimulator\SimManager.cs" />
<Compile Include="VesselSimulator\Simulation.cs" /> <Compile Include="VesselSimulator\Simulation.cs" />
<Compile Include="VesselSimulator\Stage.cs" /> <Compile Include="VesselSimulator\Stage.cs" />
<Compile Include="Flight\Readouts\Rendezvous\RelativeRadialVelocity.cs" /> <Compile Include="Flight\Readouts\Rendezvous\RelativeRadialVelocity.cs" />
<Compile Include="Flight\Readouts\Rendezvous\TimeToRendezvous.cs" /> <Compile Include="Flight\Readouts\Rendezvous\TimeToRendezvous.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Assembly-CSharp"> <Reference Include="Assembly-CSharp">
<HintPath>..\..\Game\KSP_Data\Managed\Assembly-CSharp.dll</HintPath> <HintPath>..\..\Game\KSP_Data\Managed\Assembly-CSharp.dll</HintPath>
<Private>False</Private> <Private>False</Private>
</Reference> </Reference>
  <Reference Include="Assembly-CSharp-firstpass">
  <HintPath>..\..\game\KSP_Data\Managed\Assembly-CSharp-firstpass.dll</HintPath>
  <Private>False</Private>
  </Reference>
  <Reference Include="KSPAssets">
  <HintPath>..\..\game\KSP_Data\Managed\KSPAssets.dll</HintPath>
  <Private>False</Private>
  </Reference>
  <Reference Include="KSPCore">
  <HintPath>..\..\game\KSP_Data\Managed\KSPCore.dll</HintPath>
  <Private>False</Private>
  </Reference>
  <Reference Include="KSPUtil">
  <HintPath>..\..\game\KSP_Data\Managed\KSPUtil.dll</HintPath>
  <Private>False</Private>
  </Reference>
<Reference Include="System"> <Reference Include="System">
<HintPath>..\Game\KSP_Data\Managed\System.dll</HintPath> <HintPath>..\Game\KSP_Data\Managed\System.dll</HintPath>
<Private>False</Private> <Private>False</Private>
</Reference> </Reference>
<Reference Include="System.Xml"> <Reference Include="System.Xml">
<HintPath>..\Game\KSP_Data\Managed\System.Xml.dll</HintPath> <HintPath>..\Game\KSP_Data\Managed\System.Xml.dll</HintPath>
<Private>False</Private> <Private>False</Private>
</Reference> </Reference>
<Reference Include="UnityEngine"> <Reference Include="UnityEngine">
<HintPath>..\..\Game\KSP_Data\Managed\UnityEngine.dll</HintPath> <HintPath>..\..\Game\KSP_Data\Managed\UnityEngine.dll</HintPath>
  <Private>False</Private>
  </Reference>
  <Reference Include="UnityEngine.UI">
  <HintPath>..\..\game\KSP_Data\Managed\UnityEngine.UI.dll</HintPath>
<Private>False</Private> <Private>False</Private>
</Reference> </Reference>
</ItemGroup> </ItemGroup>
<ItemGroup /> <ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="PostBuildMacros"> <Target Name="PostBuildMacros">
<GetAssemblyIdentity AssemblyFiles="$(TargetPath)"> <GetAssemblyIdentity AssemblyFiles="$(TargetPath)">
<Output TaskParameter="Assemblies" ItemName="Targets" /> <Output TaskParameter="Assemblies" ItemName="Targets" />
</GetAssemblyIdentity> </GetAssemblyIdentity>
<ItemGroup> <ItemGroup>
<VersionNumber Include="@(Targets->'%(Version)')" /> <VersionNumber Include="@(Targets->'%(Version)')" />
</ItemGroup> </ItemGroup>
</Target> </Target>
<PropertyGroup> <PropertyGroup>
<PostBuildEventDependsOn> <PostBuildEventDependsOn>
$(PostBuildEventDependsOn); $(PostBuildEventDependsOn);
PostBuildMacros; PostBuildMacros;
</PostBuildEventDependsOn> </PostBuildEventDependsOn>
<PostBuildEvent>xcopy "$(SolutionDir)Output\*" "$(SolutionDir)..\Game\GameData\*" /E /Y <PostBuildEvent>xcopy "$(SolutionDir)Output\*" "$(SolutionDir)..\Game\GameData\*" /E /Y
del "$(SolutionDir)Release\*" /Q del "$(SolutionDir)Release\*" /Q
xcopy "$(SolutionDir)Documents\*" "$(SolutionDir)Release\Documents\*" /E /Y xcopy "$(SolutionDir)Documents\*" "$(SolutionDir)Release\Documents\*" /E /Y
7z.exe a -tzip -mx3 "$(SolutionDir)Release\$(ProjectName)-@(VersionNumber).zip" "$(SolutionDir)Output\*" 7z.exe a -tzip -mx3 "$(SolutionDir)Release\$(ProjectName)-@(VersionNumber).zip" "$(SolutionDir)Output\*"
7z.exe a -tzip -mx3 "$(SolutionDir)Release\$(ProjectName)-@(VersionNumber).zip" "$(SolutionDir)Documents\*"</PostBuildEvent> 7z.exe a -tzip -mx3 "$(SolutionDir)Release\$(ProjectName)-@(VersionNumber).zip" "$(SolutionDir)Documents\*"</PostBuildEvent>
</PropertyGroup> </PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets. Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild"> <Target Name="BeforeBuild">
</Target> </Target>
<Target Name="AfterBuild"> <Target Name="AfterBuild">
</Target> </Target>
--> -->
</Project> </Project>
// //
// Kerbal Engineer Redux // Kerbal Engineer Redux
// //
// Copyright (C) 2014 CYBUTEK // Copyright (C) 2014 CYBUTEK
// //
// This program is free software: you can redistribute it and/or modify // 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 // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// //
// This program is distributed in the hope that it will be useful, // This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// //
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
// //
   
#region Using Directives #region Using Directives
   
using UnityEngine; using UnityEngine;
   
using Random = System.Random; using Random = System.Random;
   
#endregion #endregion
   
namespace KerbalEngineer namespace KerbalEngineer
{ {
public class TapeDriveAnimator : PartModule public class TapeDriveAnimator : PartModule
{ {
#region Public Fields #region Public Fields
   
[KSPField] public string Lights1 = ""; [KSPField] public string Lights1 = "";
[KSPField] public float Lights1Speed = 0; [KSPField] public float Lights1Speed = 0;
[KSPField] public string Lights2 = ""; [KSPField] public string Lights2 = "";
[KSPField] public float Lights2Speed = 0; [KSPField] public float Lights2Speed = 0;
[KSPField] public string Lights3 = ""; [KSPField] public string Lights3 = "";
[KSPField] public float Lights3Speed = 0; [KSPField] public float Lights3Speed = 0;
[KSPField] public string Lights4 = ""; [KSPField] public string Lights4 = "";
[KSPField] public float Lights4Speed = 0; [KSPField] public float Lights4Speed = 0;
[KSPField] public string Lights5 = ""; [KSPField] public string Lights5 = "";
[KSPField] public float Lights5Speed = 0; [KSPField] public float Lights5Speed = 0;
[KSPField] public string Lights6 = ""; [KSPField] public string Lights6 = "";
[KSPField] public float Lights6Speed = 0; [KSPField] public float Lights6Speed = 0;
[KSPField] public int MaxReelSpeed = 0; [KSPField] public int MaxReelSpeed = 0;
[KSPField] public int MaxRepeatTime = 0; [KSPField] public int MaxRepeatTime = 0;
[KSPField] public int MinReelSpeed = 0; [KSPField] public int MinReelSpeed = 0;
[KSPField] public int MinRepeatTime = 0; [KSPField] public int MinRepeatTime = 0;
[KSPField] public string Reel1 = ""; [KSPField] public string Reel1 = "";
[KSPField] public float Reel1SpeedRatio = 1; [KSPField] public float Reel1SpeedRatio = 1;
[KSPField] public string Reel2 = ""; [KSPField] public string Reel2 = "";
[KSPField] public float Reel2SpeedRatio = 1; [KSPField] public float Reel2SpeedRatio = 1;
[KSPField] public float RepeatTimeDenominator = 1; [KSPField] public float RepeatTimeDenominator = 1;
[KSPField] public float SpeedChangeAmount = 0; [KSPField] public float SpeedChangeAmount = 0;
[KSPField] public float SpeedDeadZone = 0; [KSPField] public float SpeedDeadZone = 0;
[KSPField] public float SpeedStopZone = 0; [KSPField] public float SpeedStopZone = 0;
[KSPField] public bool UseBakedAnimation = false; [KSPField] public bool UseBakedAnimation = false;
   
#endregion #endregion
   
#region Private Fields #region Private Fields
   
private float currentTime; private float currentTime;
private float deltaTime; private float deltaTime;
private Shader lights1ShaderOff; private Shader lights1ShaderOff;
private Transform lights1Transform; private Transform lights1Transform;
private Shader lights2ShaderOff; private Shader lights2ShaderOff;
private Transform lights2Transform; private Transform lights2Transform;
private Shader lights3ShaderOff; private Shader lights3ShaderOff;
private Transform lights3Transform; private Transform lights3Transform;
private Shader lights4ShaderOff; private Shader lights4ShaderOff;
private Transform lights4Transform; private Transform lights4Transform;
private Shader lights5ShaderOff; private Shader lights5ShaderOff;
private Transform lights5Transform; private Transform lights5Transform;
private Shader lights6ShaderOff; private Shader lights6ShaderOff;
private Transform lights6Transform; private Transform lights6Transform;
private Shader lightsShaderOn; private Shader lightsShaderOn;
private Random random; private Random random;
private Transform reel1Transform; private Transform reel1Transform;
private Transform reel2Transform; private Transform reel2Transform;
private float repeatTime; private float repeatTime;
private bool sceneIsEditor; private bool sceneIsEditor;
private float speed; private float speed;
private float targetSpeed; private float targetSpeed;
  private Renderer renderer;
  private Light light;
   
#endregion #endregion
   
#region Properties #region Properties
   
private bool isRunning; private bool isRunning;
   
public bool IsRunning public bool IsRunning
{ {
get { return this.isRunning; } get { return this.isRunning; }
set set
{ {
this.isRunning = value; this.isRunning = value;
   
if (this.isRunning) if (this.isRunning)
{ {
if (this.UseBakedAnimation) if (this.UseBakedAnimation)
{ {
this.StartBakedAnimation(); this.StartBakedAnimation();
} }
} }
else else
{ {
if (this.UseBakedAnimation) if (this.UseBakedAnimation)
{ {
this.StopBakedAnimation(); this.StopBakedAnimation();
} }
} }
} }
} }
   
#endregion #endregion
   
#region Initialisation #region Initialisation
   
public override void OnStart(StartState state) public override void OnStart(StartState state)
{ {
  renderer = GetComponent<Renderer>();
   
this.random = new Random(); this.random = new Random();
   
this.StopBakedAnimation(); this.StopBakedAnimation();
this.IsRunning = false; this.IsRunning = false;
   
if (HighLogic.LoadedSceneIsEditor) if (HighLogic.LoadedSceneIsEditor)
{ {
this.part.OnEditorAttach += this.OnEditorAttach; this.part.OnEditorAttach += this.OnEditorAttach;
this.part.OnEditorDetach += this.OnEditorDetach; this.part.OnEditorDetach += this.OnEditorDetach;
   
this.sceneIsEditor = true; this.sceneIsEditor = true;
   
if (this.part.parent != null) if (this.part.parent != null)
{ {
this.IsRunning = true; this.IsRunning = true;
} }
} }
else if (HighLogic.LoadedSceneIsFlight) else if (HighLogic.LoadedSceneIsFlight)
{ {
this.IsRunning = true; this.IsRunning = true;
} }
   
if (!this.UseBakedAnimation) if (!this.UseBakedAnimation)
{ {
this.InitialiseReels(); this.InitialiseReels();
this.InitialiseLights(); this.InitialiseLights();
} }
} }
   
private void InitialiseReels() private void InitialiseReels()
{ {
if (this.Reel1 != "") if (this.Reel1 != "")
{ {
this.reel1Transform = this.part.FindModelTransform(this.Reel1); this.reel1Transform = this.part.FindModelTransform(this.Reel1);
} }
   
if (this.Reel2 != "") if (this.Reel2 != "")
{ {
this.reel2Transform = this.part.FindModelTransform(this.Reel2); this.reel2Transform = this.part.FindModelTransform(this.Reel2);
} }
} }
   
private void InitialiseLights() private void InitialiseLights()
{ {
if (this.Lights1 != "") if (this.Lights1 != "")
{ {
this.lights1Transform = this.part.FindModelTransform(this.Lights1); this.lights1Transform = this.part.FindModelTransform(this.Lights1);
this.lights1ShaderOff = this.lights1Transform.renderer.material.shader; this.lights1ShaderOff = renderer.material.shader;
} }
   
if (this.Lights2 != "") if (this.Lights2 != "")
{ {
this.lights2Transform = this.part.FindModelTransform(this.Lights2); this.lights2Transform = this.part.FindModelTransform(this.Lights2);
this.lights2ShaderOff = this.lights2Transform.renderer.material.shader; this.lights2ShaderOff = renderer.material.shader;
} }
   
if (this.Lights3 != "") if (this.Lights3 != "")
{ {
this.lights3Transform = this.part.FindModelTransform(this.Lights3); this.lights3Transform = this.part.FindModelTransform(this.Lights3);
this.lights3ShaderOff = this.lights3Transform.renderer.material.shader; this.lights3ShaderOff = renderer.material.shader;
} }
   
if (this.Lights4 != "") if (this.Lights4 != "")
{ {
this.lights4Transform = this.part.FindModelTransform(this.Lights4); this.lights4Transform = this.part.FindModelTransform(this.Lights4);
this.lights4ShaderOff = this.lights4Transform.renderer.material.shader; this.lights4ShaderOff = renderer.material.shader;
} }
   
if (this.Lights5 != "") if (this.Lights5 != "")
{ {
this.lights5Transform = this.part.FindModelTransform(this.Lights5); this.lights5Transform = this.part.FindModelTransform(this.Lights5);
this.lights5ShaderOff = this.lights5Transform.renderer.material.shader; this.lights5ShaderOff = renderer.material.shader;
} }
   
if (this.Lights6 != "") if (this.Lights6 != "")
{ {
this.lights6Transform = this.part.FindModelTransform(this.Lights6); this.lights6Transform = this.part.FindModelTransform(this.Lights6);
this.lights6ShaderOff = this.lights6Transform.renderer.material.shader; this.lights6ShaderOff = renderer.material.shader;
} }
   
this.lightsShaderOn = Shader.Find("Unlit/Texture"); this.lightsShaderOn = Shader.Find("Unlit/Texture");
} }
   
#endregion #endregion
   
#region Updating #region Updating
   
public override void OnUpdate() public override void OnUpdate()
{ {
if (!this.UseBakedAnimation) if (!this.UseBakedAnimation)
{ {
this.deltaTime = this.sceneIsEditor ? Time.deltaTime : TimeWarp.deltaTime; this.deltaTime = this.sceneIsEditor ? Time.deltaTime : TimeWarp.deltaTime;
   
if (TimeWarp.CurrentRate != 1.0f && TimeWarp.WarpMode != TimeWarp.Modes.LOW) if (TimeWarp.CurrentRate != 1.0f && TimeWarp.WarpMode != TimeWarp.Modes.LOW)
{ {
return; return;
} }
   
if (this.IsRunning) if (this.IsRunning)
{ {
this.UpdateTimerCycle(); this.UpdateTimerCycle();
this.UpdateSpeed(); this.UpdateSpeed();
this.UpdateReels(); this.UpdateReels();
this.UpdateLights(); this.UpdateLights();
} }
else else
{ {
this.targetSpeed = 0; this.targetSpeed = 0;
   
if (this.speed != 0) if (this.speed != 0)
{ {
this.UpdateSpeed(); this.UpdateSpeed();
this.UpdateReels(); this.UpdateReels();
this.UpdateLights(); this.UpdateLights();
} }
} }
} }
} }
   
private void Update() private void Update()
{ {
if (this.sceneIsEditor) if (this.sceneIsEditor)
{ {
this.OnUpdate(); this.OnUpdate();
} }
} }
   
private void OnEditorAttach() private void OnEditorAttach()
{ {
this.IsRunning = true; this.IsRunning = true;
} }
   
private void OnEditorDetach() private void OnEditorDetach()
{ {
this.IsRunning = false; this.IsRunning = false;
} }
   
private void StopBakedAnimation() private void StopBakedAnimation()
{ {
foreach (var animator in this.part.FindModelAnimators()) foreach (var animator in this.part.FindModelAnimators())
{ {
animator.Stop(); animator.Stop();
} }
} }
   
private void StartBakedAnimation() private void StartBakedAnimation()
{ {
foreach (var animator in this.part.FindModelAnimators()) foreach (var animator in this.part.FindModelAnimators())
{ {
animator.Play(); animator.Play();
} }
} }
   
private void UpdateTimerCycle() private void UpdateTimerCycle()
{ {
this.currentTime += this.deltaTime; this.currentTime += this.deltaTime;
   
if (this.currentTime >= this.repeatTime) if (this.currentTime >= this.repeatTime)
{ {
this.targetSpeed = this.random.Next(this.MinReelSpeed, this.MaxReelSpeed); this.targetSpeed = this.random.Next(this.MinReelSpeed, this.MaxReelSpeed);
   
if (this.targetSpeed > -this.SpeedStopZone && this.targetSpeed < this.SpeedStopZone) if (this.targetSpeed > -this.SpeedStopZone && this.targetSpeed < this.SpeedStopZone)
{ {
this.targetSpeed = 0; this.targetSpeed = 0;
} }
   
this.repeatTime = this.random.Next(this.MinRepeatTime, this.MaxRepeatTime); this.repeatTime = this.random.Next(this.MinRepeatTime, this.MaxRepeatTime);
   
if (this.RepeatTimeDenominator != 0) if (this.RepeatTimeDenominator != 0)
{ {
this.repeatTime /= this.RepeatTimeDenominator; this.repeatTime /= this.RepeatTimeDenominator;
} }
   
this.currentTime -= this.repeatTime; this.currentTime -= this.repeatTime;
} }
} }
   
private void UpdateSpeed() private void UpdateSpeed()
{ {
if (this.speed < this.targetSpeed) if (this.speed < this.targetSpeed)
{ {
if (this.speed < this.targetSpeed - this.SpeedDeadZone) if (this.speed < this.targetSpeed - this.SpeedDeadZone)
{ {
this.speed += this.SpeedChangeAmount * this.deltaTime; this.speed += this.SpeedChangeAmount * this.deltaTime;
} }
else else
{ {
this.speed = this.targetSpeed; this.speed = this.targetSpeed;
} }
} }
else if (this.speed > this.targetSpeed) else if (this.speed > this.targetSpeed)
{ {
if (this.speed > this.targetSpeed + this.SpeedDeadZone) if (this.speed > this.targetSpeed + this.SpeedDeadZone)
{ {
this.speed -= this.SpeedChangeAmount * this.deltaTime; this.speed -= this.SpeedChangeAmount * this.deltaTime;
} }
else else
{ {
this.speed = this.targetSpeed; this.speed = this.targetSpeed;
} }
} }
} }
   
private void UpdateReels() private void UpdateReels()
{ {
if (this.reel1Transform != null && this.speed != 0) if (this.reel1Transform != null && this.speed != 0)
{ {
this.reel1Transform.transform.Rotate(Vector3.right, this.speed * this.Reel1SpeedRatio); this.reel1Transform.transform.Rotate(Vector3.right, this.speed * this.Reel1SpeedRatio);
} }
   
if (this.reel2Transform != null && this.speed != 0) if (this.reel2Transform != null && this.speed != 0)
{ {
this.reel2Transform.transform.Rotate(Vector3.right, this.speed * this.Reel2SpeedRatio); this.reel2Transform.transform.Rotate(Vector3.right, this.speed * this.Reel2SpeedRatio);
} }
} }
   
private void UpdateLights() private void UpdateLights()
{ {
if (this.lights1Transform != null) if (this.lights1Transform != null)
{ {
this.UpdateLightTransform(this.lights1Transform, this.lightsShaderOn, this.lights1ShaderOff, this.Lights1Speed); this.UpdateLightTransform(this.lights1Transform, this.lightsShaderOn, this.lights1ShaderOff, this.Lights1Speed);
} }
if (this.lights2Transform != null) if (this.lights2Transform != null)
{ {
this.UpdateLightTransform(this.lights2Transform, this.lightsShaderOn, this.lights2ShaderOff, this.Lights2Speed); this.UpdateLightTransform(this.lights2Transform, this.lightsShaderOn, this.lights2ShaderOff, this.Lights2Speed);
} }
if (this.lights3Transform != null) if (this.lights3Transform != null)
{ {
this.UpdateLightTransform(this.lights3Transform, this.lightsShaderOn, this.lights3ShaderOff, this.Lights3Speed); this.UpdateLightTransform(this.lights3Transform, this.lightsShaderOn, this.lights3ShaderOff, this.Lights3Speed);
} }
if (this.lights4Transform != null) if (this.lights4Transform != null)
{ {
this.UpdateLightTransform(this.lights4Transform, this.lightsShaderOn, this.lights4ShaderOff, this.Lights4Speed); this.UpdateLightTransform(this.lights4Transform, this.lightsShaderOn, this.lights4ShaderOff, this.Lights4Speed);
} }
if (this.lights5Transform != null) if (this.lights5Transform != null)
{ {
this.UpdateLightTransform(this.lights5Transform, this.lightsShaderOn, this.lights5ShaderOff, this.Lights5Speed); this.UpdateLightTransform(this.lights5Transform, this.lightsShaderOn, this.lights5ShaderOff, this.Lights5Speed);
} }
if (this.lights6Transform != null) if (this.lights6Transform != null)
{ {
this.UpdateLightTransform(this.lights6Transform, this.lightsShaderOn, this.lights6ShaderOff, this.Lights6Speed); this.UpdateLightTransform(this.lights6Transform, this.lightsShaderOn, this.lights6ShaderOff, this.Lights6Speed);
} }
} }
   
private void UpdateLightTransform(Component lights, Shader on, Shader off, float targetSpeed) private void UpdateLightTransform(Component lights, Shader on, Shader off, float targetSpeed)
{ {
bool lightsOn; bool lightsOn;
   
if (targetSpeed > 0) if (targetSpeed > 0)
{ {
lightsOn = (this.speed > targetSpeed); lightsOn = (this.speed > targetSpeed);
} }
else if (targetSpeed < 0) else if (targetSpeed < 0)
{ {
lightsOn = (this.speed < targetSpeed); lightsOn = (this.speed < targetSpeed);
} }
else else
{ {
lightsOn = (this.speed == 0); lightsOn = (this.speed == 0);
} }
   
lights.renderer.material.shader = lightsOn ? @on : off; lights.GetComponent<Renderer>().material.shader = lightsOn ? @on : off;
} }
   
#endregion #endregion
} }
} }
 Binary files /dev/null and b/Output/KerbalEngineer/KerbalEngineer differ
 Binary files /dev/null and b/Output/KerbalEngineer/KerbalEngineer.Unity.dll differ
 Binary files a/Output/KerbalEngineer/KerbalEngineer.dll and b/Output/KerbalEngineer/KerbalEngineer.dll differ
  ManifestFileVersion: 0
  AssetBundleManifest:
  AssetBundleInfos:
  Info_0:
  Name: prefabs
  Dependencies: {}
  Info_1:
  Name: images
  Dependencies: {}
 
 Binary files a/Output/KerbalEngineer/Textures/ToolbarIcon.png and /dev/null differ
 Binary files /dev/null and b/Output/KerbalEngineer/images differ
  ManifestFileVersion: 0
  CRC: 2833314722
  Hashes:
  AssetFileHash:
  serializedVersion: 2
  Hash: b45648c25b082800bed1fc56179dfff5
  TypeTreeHash:
  serializedVersion: 2
  Hash: 00ffc586b3c4c12c72c7fed589b81235
  HashAppended: 0
  ClassTypes:
  - Class: 28
  Script: {instanceID: 0}
  - Class: 213
  Script: {instanceID: 0}
  Assets:
  - Assets/Images/ui-drop-down.psd
  - Assets/Images/app-launcher-icon.psd
  - Assets/Images/flight-menu-background.psd
  Dependencies: []
 
 Binary files /dev/null and b/Output/KerbalEngineer/prefabs differ
  ManifestFileVersion: 0
  CRC: 3110848426
  Hashes:
  AssetFileHash:
  serializedVersion: 2
  Hash: 1222d5da945826ed2afaf4cba65a3f5d
  TypeTreeHash:
  serializedVersion: 2
  Hash: c49d0f1c41a1b57d6af1061f875f232a
  HashAppended: 0
  ClassTypes:
  - Class: 1
  Script: {instanceID: 0}
  - Class: 21
  Script: {instanceID: 0}
  - Class: 28
  Script: {instanceID: 0}
  - Class: 48
  Script: {instanceID: 0}
  - Class: 114
  Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
  - Class: 114
  Script: {fileID: 1741964061, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
  - Class: 114
  Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
  - Class: 114
  Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
  - Class: 114
  Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
  - Class: 114
  Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
  - Class: 115
  Script: {instanceID: 0}
  - Class: 128
  Script: {instanceID: 0}
  - Class: 213
  Script: {instanceID: 0}
  - Class: 222
  Script: {instanceID: 0}
  - Class: 224
  Script: {instanceID: 0}
  Assets:
  - Assets/Prefabs/flight-menu.prefab
  Dependencies: []
 
  %YAML 1.1
  %TAG !u! tag:unity3d.com,2011:
  --- !u!11 &1
  AudioManager:
  m_ObjectHideFlags: 0
  m_Volume: 1
  Rolloff Scale: 1
  Doppler Factor: 1
  Default Speaker Mode: 2
  m_SampleRate: 0
  m_DSPBufferSize: 0
  m_VirtualVoiceCount: 512
  m_RealVoiceCount: 32
  m_SpatializerPlugin:
  m_DisableAudio: 0
 
  %YAML 1.1
  %TAG !u! tag:unity3d.com,2011:
  --- !u!55 &1
  PhysicsManager:
  m_ObjectHideFlags: 0
  serializedVersion: 2
  m_Gravity: {x: 0, y: -9.81000042, z: 0}
  m_DefaultMaterial: {fileID: 0}
  m_BounceThreshold: 2
  m_SleepThreshold: .00499999989
  m_DefaultContactOffset: .00999999978
  m_SolverIterationCount: 6
  m_QueriesHitTriggers: 1
  m_EnableAdaptiveForce: 0
  m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
 
  %YAML 1.1
  %TAG !u! tag:unity3d.com,2011:
  --- !u!1045 &1
  EditorBuildSettings:
  m_ObjectHideFlags: 0
  serializedVersion: 2
  m_Scenes: []
 
  %YAML 1.1
  %TAG !u! tag:unity3d.com,2011:
  --- !u!159 &1
  EditorSettings:
  m_ObjectHideFlags: 0
  serializedVersion: 3
  m_ExternalVersionControlSupport: Visible Meta Files
  m_SerializationMode: 2
  m_WebSecurityEmulationEnabled: 0
  m_WebSecurityEmulationHostUrl: http://www.mydomain.com/mygame.unity3d
  m_DefaultBehaviorMode: 1
  m_SpritePackerMode: 2
  m_SpritePackerPaddingPower: 1
  m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd
  m_ProjectGenerationRootNamespace:
 
  %YAML 1.1
  %TAG !u! tag:unity3d.com,2011:
  --- !u!30 &1
  GraphicsSettings:
  m_ObjectHideFlags: 0
  serializedVersion: 4
  m_Deferred:
  m_Mode: 1
  m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
  m_DeferredReflections:
  m_Mode: 1
  m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}
  m_LegacyDeferred:
  m_Mode: 1
  m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}
  m_AlwaysIncludedShaders:
  - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
  - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}
  - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}
  - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
  - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
  - {fileID: 10782, guid: 0000000000000000f000000000000000, type: 0}
  m_PreloadedShaders: []
  m_LightmapStripping: 0
  m_LightmapKeepPlain: 1
  m_LightmapKeepDirCombined: 1
  m_LightmapKeepDirSeparate: 1
  m_LightmapKeepDynamicPlain: 1
  m_LightmapKeepDynamicDirCombined: 1
  m_LightmapKeepDynamicDirSeparate: 1
  m_FogStripping: 0
  m_FogKeepLinear: 1
  m_FogKeepExp: 1
  m_FogKeepExp2: 1
 
  %YAML 1.1
  %TAG !u! tag:unity3d.com,2011:
  --- !u!13 &1
  InputManager:
  m_ObjectHideFlags: 0
  serializedVersion: 2
  m_Axes:
  - serializedVersion: 3
  m_Name: Horizontal
  descriptiveName:
  descriptiveNegativeName:
  negativeButton: left
  positiveButton: right
  altNegativeButton: a
  altPositiveButton: d
  gravity: 3
  dead: .00100000005
  sensitivity: 3
  snap: 1
  invert: 0
  type: 0
  axis: 0
  joyNum: 0
  - serializedVersion: 3
  m_Name: Vertical
  descriptiveName:
  descriptiveNegativeName:
  negativeButton: down
  positiveButton: up
  altNegativeButton: s
  altPositiveButton: w
  gravity: 3
  dead: .00100000005
  sensitivity: 3
  snap: 1
  invert: 0
  type: 0
  axis: 0
  joyNum: 0
  - serializedVersion: 3
  m_Name: Fire1
  descriptiveName:
  descriptiveNegativeName:
  negativeButton:
  positiveButton: left ctrl
  altNegativeButton:
  altPositiveButton: mouse 0
  gravity: 1000
  dead: .00100000005
  sensitivity: 1000
  snap: 0
  invert: 0
  type: 0
  axis: 0
  joyNum: 0
  - serializedVersion: 3
  m_Name: Fire2
  descriptiveName:
  descriptiveNegativeName:
  negativeButton:
  positiveButton: left alt
  altNegativeButton:
  altPositiveButton: mouse 1
  gravity: 1000
  dead: .00100000005
  sensitivity: 1000
  snap: 0
  invert: 0
  type: 0
  axis: 0
  joyNum: 0
  - serializedVersion: 3
  m_Name: Fire3
  descriptiveName:
  descriptiveNegativeName:
  negativeButton:
  positiveButton: left shift
  altNegativeButton:
  altPositiveButton: mouse 2
  gravity: 1000
  dead: .00100000005
  sensitivity: 1000
  snap: 0
  invert: 0
  type: 0
  axis: 0
  joyNum: 0
  - serializedVersion: 3
  m_Name: Jump
  descriptiveName:
  descriptiveNegativeName:
  negativeButton:
  positiveButton: space
  altNegativeButton:
  altPositiveButton:
  gravity: 1000
  dead: .00100000005
  sensitivity: 1000
  snap: 0
  invert: 0
  type: 0
  axis: 0
  joyNum: 0
  - serializedVersion: 3
  m_Name: Mouse X
  descriptiveName:
  descriptiveNegativeName:
  negativeButton:
  positiveButton:
  altNegativeButton:
  altPositiveButton:
  gravity: 0
  dead: 0
  sensitivity: .100000001
  snap: 0
  invert: 0
  type: 1
  axis: 0
  joyNum: 0
  - serializedVersion: 3
  m_Name: Mouse Y
  descriptiveName:
  descriptiveNegativeName:
  negativeButton:
  positiveButton:
  altNegativeButton:
  altPositiveButton:
  gravity: 0
  dead: 0
  sensitivity: .100000001
  snap: 0
  invert: 0
  type: 1
  axis: 1
  joyNum: 0
  - serializedVersion: 3
  m_Name: Mouse ScrollWheel
  descriptiveName:
  descriptiveNegativeName:
  negativeButton:
  positiveButton:
  altNegativeButton:
  altPositiveButton:
  gravity: 0
  dead: 0
  sensitivity: .100000001
  snap: 0
  invert: 0
  type: 1
  axis: 2
  joyNum: 0
  - serializedVersion: 3
  m_Name: Horizontal
  descriptiveName:
  descriptiveNegativeName:
  negativeButton:
  positiveButton:
  altNegativeButton:
  altPositiveButton:
  gravity: 0
  dead: .189999998
  sensitivity: 1
  snap: 0
  invert: 0
  type: 2
  axis: 0
  joyNum: 0
  - serializedVersion: 3
  m_Name: Vertical
  descriptiveName:
  descriptiveNegativeName:
  negativeButton:
  positiveButton:
  altNegativeButton:
  altPositiveButton:
  gravity: 0
  dead: .189999998
  sensitivity: 1
  snap: 0
  invert: 1
  type: 2
  axis: 1
  joyNum: 0
  - serializedVersion: 3
  m_Name: Fire1
  descriptiveName:
  descriptiveNegativeName:
  negativeButton:
  positiveButton: joystick button 0
  altNegativeButton:
  altPositiveButton:
  gravity: 1000
  dead: .00100000005
  sensitivity: 1000
  snap: 0
  invert: 0
  type: 0
  axis: 0
  joyNum: 0
  - serializedVersion: 3
  m_Name: Fire2
  descriptiveName:
  descriptiveNegativeName:
  negativeButton:
  positiveButton: joystick button 1
  altNegativeButton:
  altPositiveButton:
  gravity: 1000
  dead: .00100000005
  sensitivity: 1000
  snap: 0
  invert: 0
  type: 0
  axis: 0
  joyNum: 0
  - serializedVersion: 3
  m_Name: Fire3
  descriptiveName:
  descriptiveNegativeName:
  negativeButton:
  positiveButton: joystick button 2
  altNegativeButton:
  altPositiveButton:
  gravity: 1000
  dead: .00100000005
  sensitivity: 1000
  snap: 0
  invert: 0
  type: 0
  axis: 0
  joyNum: 0
  - serializedVersion: 3
  m_Name: Jump
  descriptiveName:
  descriptiveNegativeName:
  negativeButton:
  positiveButton: joystick button 3
  altNegativeButton:
  altPositiveButton:
  gravity: 1000
  dead: .00100000005
  sensitivity: 1000
  snap: 0
  invert: 0
  type: 0
  axis: 0
  joyNum: 0
  - serializedVersion: 3
  m_Name: Submit
  descriptiveName:
  descriptiveNegativeName:
  negativeButton:
  positiveButton: return
  altNegativeButton:
  altPositiveButton: joystick button 0
  gravity: 1000
  dead: .00100000005
  sensitivity: 1000
  snap: 0
  invert: 0
  type: 0
  axis: 0
  joyNum: 0
  - serializedVersion: 3
  m_Name: Submit
  descriptiveName:
  descriptiveNegativeName:
  negativeButton:
  positiveButton: enter
  altNegativeButton:
  altPositiveButton: space
  gravity: 1000
  dead: .00100000005
  sensitivity: 1000
  snap: 0
  invert: 0
  type: 0
  axis: 0
  joyNum: 0
  - serializedVersion: 3
  m_Name: Cancel
  descriptiveName:
  descriptiveNegativeName:
  negativeButton:
  positiveButton: escape
  altNegativeButton:
  altPositiveButton: joystick button 1
  gravity: 1000
  dead: .00100000005
  sensitivity: 1000
  snap: 0
  invert: 0
  type: 0
  axis: 0
  joyNum: 0
 
  %YAML 1.1
  %TAG !u! tag:unity3d.com,2011:
  --- !u!126 &1
  NavMeshAreas:
  m_ObjectHideFlags: 0
  serializedVersion: 2
  areas:
  - name: Walkable
  cost: 1
  - name: Not Walkable
  cost: 1
  - name: Jump
  cost: 2
  - name:
  cost: 1
  - name:
  cost: 1
  - name:
  cost: 1
  - name:
  cost: 1
  - name:
  cost: 1
  - name:
  cost: 1
  - name:
  cost: 1
  - name:
  cost: 1
  - name:
  cost: 1
  - name:
  cost: 1
  - name:
  cost: 1
  - name:
  cost: 1
  - name:
  cost: 1
  - name:
  cost: 1
  - name:
  cost: 1
  - name:
  cost: 1
  - name:
  cost: 1
  - name:
  cost: 1
  - name:
  cost: 1
  - name:
  cost: 1
  - name:
  cost: 1
  - name:
  cost: 1
  - name:
  cost: 1
  - name:
  cost: 1
  - name:
  cost: 1
  - name:
  cost: 1
  - name:
  cost: 1
  - name:
  cost: 1
  - name:
  cost: 1
 
  %YAML 1.1
  %TAG !u! tag:unity3d.com,2011:
  --- !u!149 &1
  NetworkManager:
  m_ObjectHideFlags: 0
  m_DebugLevel: 0
  m_Sendrate: 15
  m_AssetToPrefab: {}
 
  %YAML 1.1
  %TAG !u! tag:unity3d.com,2011:
  --- !u!19 &1
  Physics2DSettings:
  m_ObjectHideFlags: 0
  serializedVersion: 2
  m_Gravity: {x: 0, y: -9.81000042}
  m_DefaultMaterial: {fileID: 0}
  m_VelocityIterations: 8
  m_PositionIterations: 3
  m_VelocityThreshold: 1
  m_MaxLinearCorrection: .200000003
  m_MaxAngularCorrection: 8
  m_MaxTranslationSpeed: 100
  m_MaxRotationSpeed: 360
  m_MinPenetrationForPenalty: .00999999978
  m_BaumgarteScale: .200000003
  m_BaumgarteTimeOfImpactScale: .75
  m_TimeToSleep: .5
  m_LinearSleepTolerance: .00999999978
  m_AngularSleepTolerance: 2
  m_QueriesHitTriggers: 1
  m_QueriesStartInColliders: 1
  m_ChangeStopsCallbacks: 0
  m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
 
  %YAML 1.1
  %TAG !u! tag:unity3d.com,2011:
  --- !u!129 &1
  PlayerSettings:
  m_ObjectHideFlags: 0
  serializedVersion: 7
  AndroidProfiler: 0
  defaultScreenOrientation: 4
  targetDevice: 2
  targetResolution: 0
  useOnDemandResources: 0
  accelerometerFrequency: 60
  companyName: DefaultCompany
  productName: New Unity Project
  defaultCursor: {fileID: 0}
  cursorHotspot: {x: 0, y: 0}
  m_ShowUnitySplashScreen: 1
  defaultScreenWidth: 1024
  defaultScreenHeight: 768
  defaultScreenWidthWeb: 960
  defaultScreenHeightWeb: 600
  m_RenderingPath: 1
  m_MobileRenderingPath: 1
  m_ActiveColorSpace: 0
  m_MTRendering: 1
  m_MobileMTRendering: 0
  m_Stereoscopic3D: 0
  iosShowActivityIndicatorOnLoading: -1
  androidShowActivityIndicatorOnLoading: -1
  iosAppInBackgroundBehavior: 0
  displayResolutionDialog: 1
  iosAllowHTTPDownload: 1
  allowedAutorotateToPortrait: 1
  allowedAutorotateToPortraitUpsideDown: 1
  allowedAutorotateToLandscapeRight: 1
  allowedAutorotateToLandscapeLeft: 1
  useOSAutorotation: 1
  use32BitDisplayBuffer: 1
  disableDepthAndStencilBuffers: 0
  defaultIsFullScreen: 1
  defaultIsNativeResolution: 1
  runInBackground: 0
  captureSingleScreen: 0
  Override IPod Music: 0
  Prepare IOS For Recording: 0
  submitAnalytics: 1
  usePlayerLog: 1
  bakeCollisionMeshes: 0
  forceSingleInstance: 0
  resizableWindow: 0
  useMacAppStoreValidation: 0
  gpuSkinning: 0
  xboxPIXTextureCapture: 0
  xboxEnableAvatar: 0
  xboxEnableKinect: 0
  xboxEnableKinectAutoTracking: 0
  xboxEnableFitness: 0
  visibleInBackground: 0
  macFullscreenMode: 2
  d3d9FullscreenMode: 1
  d3d11FullscreenMode: 1
  xboxSpeechDB: 0
  xboxEnableHeadOrientation: 0
  xboxEnableGuest: 0
  n3dsDisableStereoscopicView: 0
  n3dsEnableSharedListOpt: 1
  n3dsEnableVSync: 0
  xboxOneResolution: 0
  ps3SplashScreen: {fileID: 0}
  videoMemoryForVertexBuffers: 0
  psp2PowerMode: 0
  psp2AcquireBGM: 1
  wiiUTVResolution: 0
  wiiUGamePadMSAA: 1
  wiiUSupportsNunchuk: 0
  wiiUSupportsClassicController: 0
  wiiUSupportsBalanceBoard: 0
  wiiUSupportsMotionPlus: 0
  wiiUSupportsProController: 0
  wiiUAllowScreenCapture: 1
  wiiUControllerCount: 0
  m_SupportedAspectRatios:
  4:3: 1
  5:4: 1
  16:10: 1
  16:9: 1
  Others: 1
  bundleIdentifier: com.Company.ProductName
  bundleVersion: 1.0
  preloadedAssets: []
  metroEnableIndependentInputSource: 0
  metroEnableLowLatencyPresentationAPI: 0
  xboxOneDisableKinectGpuReservation: 0
  virtualRealitySupported: 0
  productGUID: affd9915876e7bc42a4bf20f2a215263
  AndroidBundleVersionCode: 1
  AndroidMinSdkVersion: 9
  AndroidPreferredInstallLocation: 1
  aotOptions:
  apiCompatibilityLevel: 2
  stripEngineCode: 1
  iPhoneStrippingLevel: 0
  iPhoneScriptCallOptimization: 0
  iPhoneBuildNumber: 0
  ForceInternetPermission: 0
  ForceSDCardPermission: 0
  CreateWallpaper: 0
  APKExpansionFiles: 0
  preloadShaders: 0
  StripUnusedMeshComponents: 0
  VertexChannelCompressionMask:
  serializedVersion: 2
  m_Bits: 238
  iPhoneSdkVersion: 988
  iPhoneTargetOSVersion: 22
  uIPrerenderedIcon: 0
  uIRequiresPersistentWiFi: 0
  uIRequiresFullScreen: 1
  uIStatusBarHidden: 1
  uIExitOnSuspend: 0
  uIStatusBarStyle: 0
  iPhoneSplashScreen: {fileID: 0}
  iPhoneHighResSplashScreen: {fileID: 0}
  iPhoneTallHighResSplashScreen: {fileID: 0}
  iPhone47inSplashScreen: {fileID: 0}
  iPhone55inPortraitSplashScreen: {fileID: 0}
  iPhone55inLandscapeSplashScreen: {fileID: 0}
  iPadPortraitSplashScreen: {fileID: 0}
  iPadHighResPortraitSplashScreen: {fileID: 0}
  iPadLandscapeSplashScreen: {fileID: 0}
  iPadHighResLandscapeSplashScreen: {fileID: 0}
  iOSLaunchScreenType: 0
  iOSLaunchScreenPortrait: {fileID: 0}
  iOSLaunchScreenLandscape: {fileID: 0}
  iOSLaunchScreenBackgroundColor:
  serializedVersion: 2
  rgba: 0
  iOSLaunchScreenFillPct: 100
  iOSLaunchScreenSize: 100
  iOSLaunchScreenCustomXibPath:
  iOSLaunchScreeniPadType: 0
  iOSLaunchScreeniPadImage: {fileID: 0}
  iOSLaunchScreeniPadBackgroundColor:
  serializedVersion: 2
  rgba: 0
  iOSLaunchScreeniPadFillPct: 100
  iOSLaunchScreeniPadSize: 100
  iOSLaunchScreeniPadCustomXibPath:
  iOSDeviceRequirements: []
  AndroidTargetDevice: 0
  AndroidSplashScreenScale: 0
  androidSplashScreen: {fileID: 0}
  AndroidKeystoreName:
  AndroidKeyaliasName:
  AndroidTVCompatibility: 1
  AndroidIsGame: 1
  androidEnableBanner: 1
  m_AndroidBanners:
  - width: 320
  height: 180
  banner: {fileID: 0}
  androidGamepadSupportLevel: 0
  resolutionDialogBanner: {fileID: 0}
  m_BuildTargetIcons: []
  m_BuildTargetBatching: []
  m_BuildTargetGraphicsAPIs: []
  webPlayerTemplate: APPLICATION:Default
  m_TemplateCustomTags: {}
  wiiUTitleID: 0005000011000000
  wiiUGroupID: 00010000
  wiiUCommonSaveSize: 4096
  wiiUAccountSaveSize: 2048
  wiiUOlvAccessKey: 0
  wiiUTinCode: 0
  wiiUJoinGameId: 0
  wiiUJoinGameModeMask: 0000000000000000
  wiiUCommonBossSize: 0
  wiiUAccountBossSize: 0
  wiiUAddOnUniqueIDs: []
  wiiUMainThreadStackSize: 3072
  wiiULoaderThreadStackSize: 1024
  wiiUSystemHeapSize: 128
  wiiUTVStartupScreen: {fileID: 0}
  wiiUGamePadStartupScreen: {fileID: 0}
  wiiUProfilerLibPath:
  actionOnDotNetUnhandledException: 1
  enableInternalProfiler: 0
  logObjCUncaughtExceptions: 1
  enableCrashReportAPI: 0
  locationUsageDescription:
  XboxTitleId:
  XboxImageXexPath:
  XboxSpaPath:
  XboxGenerateSpa: 0
  XboxDeployKinectResources: 0
  XboxSplashScreen: {fileID: 0}
  xboxEnableSpeech: 0
  xboxAdditionalTitleMemorySize: 0
  xboxDeployKinectHeadOrientation: 0
  xboxDeployKinectHeadPosition: 0
  ps3TitleConfigPath:
  ps3DLCConfigPath:
  ps3ThumbnailPath:
  ps3BackgroundPath:
  ps3SoundPath:
  ps3NPAgeRating: 12
  ps3TrophyCommId:
  ps3NpCommunicationPassphrase:
  ps3TrophyPackagePath:
  ps3BootCheckMaxSaveGameSizeKB: 128
  ps3TrophyCommSig:
  ps3SaveGameSlots: 1
  ps3TrialMode: 0
  ps3VideoMemoryForAudio: 0
  ps3EnableVerboseMemoryStats: 0
  ps3UseSPUForUmbra: 0
  ps3EnableMoveSupport: 1
  ps3DisableDolbyEncoding: 0
  ps4NPAgeRating: 12
  ps4NPTitleSecret:
  ps4NPTrophyPackPath:
  ps4ParentalLevel: 1
  ps4ContentID: ED1633-NPXX51362_00-0000000000000000
  ps4Category: 0
  ps4MasterVersion: 01.00
  ps4AppVersion: 01.00
  ps4AppType: 0
  ps4ParamSfxPath:
  ps4VideoOutPixelFormat: 0
  ps4VideoOutResolution: 4
  ps4PronunciationXMLPath:
  ps4PronunciationSIGPath:
  ps4BackgroundImagePath:
  ps4StartupImagePath:
  ps4SaveDataImagePath:
  ps4SdkOverride:
  ps4BGMPath:
  ps4ShareFilePath:
  ps4ShareOverlayImagePath:
  ps4PrivacyGuardImagePath:
  ps4NPtitleDatPath:
  ps4RemotePlayKeyAssignment: -1
  ps4RemotePlayKeyMappingDir:
  ps4EnterButtonAssignment: 1
  ps4ApplicationParam1: 0
  ps4ApplicationParam2: 0
  ps4ApplicationParam3: 0
  ps4ApplicationParam4: 0
  ps4DownloadDataSize: 0
  ps4GarlicHeapSize: 2048
  ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ
  ps4pnSessions: 1
  ps4pnPresence: 1
  ps4pnFriends: 1
  ps4pnGameCustomData: 1
  playerPrefsSupport: 0
  ps4ReprojectionSupport: 0
  ps4UseAudio3dBackend: 0
  ps4Audio3dVirtualSpeakerCount: 14
  ps4attribCpuUsage: 0
  ps4SocialScreenEnabled: 0
  ps4attribUserManagement: 0
  ps4attribMoveSupport: 0
  ps4attrib3DSupport: 0
  ps4attribShareSupport: 0
  ps4IncludedModules: []
  monoEnv:
  psp2Splashimage: {fileID: 0}
  psp2NPTrophyPackPath:
  psp2NPSupportGBMorGJP: 0
  psp2NPAgeRating: 12
  psp2NPTitleDatPath:
  psp2NPCommsID:
  psp2NPCommunicationsID:
  psp2NPCommsPassphrase:
  psp2NPCommsSig:
  psp2ParamSfxPath:
  psp2ManualPath:
  psp2LiveAreaGatePath:
  psp2LiveAreaBackroundPath:
  psp2LiveAreaPath:
  psp2LiveAreaTrialPath:
  psp2PatchChangeInfoPath:
  psp2PatchOriginalPackage:
  psp2PackagePassword: F69AzBlax3CF3EDNhm3soLBPh71Yexui
  psp2KeystoneFile:
  psp2MemoryExpansionMode: 0
  psp2DRMType: 0
  psp2StorageType: 0
  psp2MediaCapacity: 0
  psp2DLCConfigPath:
  psp2ThumbnailPath:
  psp2BackgroundPath:
  psp2SoundPath:
  psp2TrophyCommId:
  psp2TrophyPackagePath:
  psp2PackagedResourcesPath:
  psp2SaveDataQuota: 10240
  psp2ParentalLevel: 1
  psp2ShortTitle: Not Set
  psp2ContentID: IV0000-ABCD12345_00-0123456789ABCDEF
  psp2Category: 0
  psp2MasterVersion: 01.00
  psp2AppVersion: 01.00
  psp2TVBootMode: 0
  psp2EnterButtonAssignment: 2
  psp2TVDisableEmu: 0
  psp2AllowTwitterDialog: 1
  psp2Upgradable: 0
  psp2HealthWarning: 0
  psp2UseLibLocation: 0
  psp2InfoBarOnStartup: 0
  psp2InfoBarColor: 0
  psmSplashimage: {fileID: 0}
  spritePackerPolicy:
  scriptingDefineSymbols: {}
  metroPackageName: New Unity Project
  metroPackageLogo:
  metroPackageLogo140:
  metroPackageLogo180:
  metroPackageLogo240:
  metroPackageVersion:
  metroCertificatePath:
  metroCertificatePassword:
  metroCertificateSubject:
  metroCertificateIssuer:
  metroCertificateNotAfter: 0000000000000000
  metroApplicationDescription: New Unity Project
  metroStoreTileLogo80:
  metroStoreTileLogo:
  metroStoreTileLogo140:
  metroStoreTileLogo180:
  metroStoreTileWideLogo80:
  metroStoreTileWideLogo:
  metroStoreTileWideLogo140:
  metroStoreTileWideLogo180:
  metroStoreTileSmallLogo80:
  metroStoreTileSmallLogo:
  metroStoreTileSmallLogo140:
  metroStoreTileSmallLogo180:
  metroStoreSmallTile80:
  metroStoreSmallTile:
  metroStoreSmallTile140:
  metroStoreSmallTile180:
  metroStoreLargeTile80:
  metroStoreLargeTile:
  metroStoreLargeTile140:
  metroStoreLargeTile180:
  metroStoreSplashScreenImage:
  metroStoreSplashScreenImage140:
  metroStoreSplashScreenImage180:
  metroPhoneAppIcon:
  metroPhoneAppIcon140:
  metroPhoneAppIcon240:
  metroPhoneSmallTile:
  metroPhoneSmallTile140:
  metroPhoneSmallTile240:
  metroPhoneMediumTile:
  metroPhoneMediumTile140:
  metroPhoneMediumTile240:
  metroPhoneWideTile:
  metroPhoneWideTile140:
  metroPhoneWideTile240:
  metroPhoneSplashScreenImage:
  metroPhoneSplashScreenImage140:
  metroPhoneSplashScreenImage240:
  metroTileShortName:
  metroCommandLineArgsFile:
  metroTileShowName: 0
  metroMediumTileShowName: 0
  metroLargeTileShowName: 0
  metroWideTileShowName: 0
  metroDefaultTileSize: 1
  metroTileForegroundText: 1
  metroTileBackgroundColor: {r: 0, g: 0, b: 0, a: 1}
  metroSplashScreenBackgroundColor: {r: 0, g: 0, b: 0, a: 1}
  metroSplashScreenUseBackgroundColor: 0
  platformCapabilities: {}
  metroFTAName:
  metroFTAFileTypes: []
  metroProtocolName:
  metroCompilationOverrides: 1
  blackberryDeviceAddress:
  blackberryDevicePassword:
  blackberryTokenPath:
  blackberryTokenExires:
  blackberryTokenAuthor:
  blackberryTokenAuthorId:
  blackberryCskPassword:
  blackberrySaveLogPath:
  blackberrySharedPermissions: 0
  blackberryCameraPermissions: 0
  blackberryGPSPermissions: 0
  blackberryDeviceIDPermissions: 0
  blackberryMicrophonePermissions: 0
  blackberryGamepadSupport: 0
  blackberryBuildId: 0
  blackberryLandscapeSplashScreen: {fileID: 0}
  blackberryPortraitSplashScreen: {fileID: 0}
  blackberrySquareSplashScreen: {fileID: 0}
  tizenProductDescription:
  tizenProductURL:
  tizenSigningProfileName:
  tizenGPSPermissions: 0
  tizenMicrophonePermissions: 0
  n3dsUseExtSaveData: 0
  n3dsCompressStaticMem: 1
  n3dsExtSaveDataNumber: 0x12345
  n3dsStackSize: 131072
  n3dsTargetPlatform: 2
  n3dsRegion: 7
  n3dsMediaSize: 0
  n3dsLogoStyle: 3
  n3dsTitle: GameName
  n3dsProductCode:
  n3dsApplicationId: 0xFF3FF
  stvDeviceAddress:
  stvProductDescription:
  stvProductAuthor:
  stvProductAuthorEmail:
  stvProductLink:
  stvProductCategory: 0
  XboxOneProductId:
  XboxOneUpdateKey:
  XboxOneSandboxId:
  XboxOneContentId:
  XboxOneTitleId:
  XboxOneSCId:
  XboxOneGameOsOverridePath:
  XboxOnePackagingOverridePath:
  XboxOneAppManifestOverridePath:
  XboxOnePackageEncryption: 0
  XboxOnePackageUpdateGranularity: 2
  XboxOneDescription:
  XboxOneIsContentPackage: 0
  XboxOneEnableGPUVariability: 0
  XboxOneSockets: {}
  XboxOneSplashScreen: {fileID: 0}
  XboxOneAllowedProductIds: []
  XboxOnePersistentLocalStorageSize: 0
  intPropertyNames:
  - Android::ScriptingBackend
  - Metro::ScriptingBackend
  - Standalone::ScriptingBackend
  - WP8::ScriptingBackend
  - WebGL::ScriptingBackend
  - WebGL::audioCompressionFormat
  - WebGL::exceptionSupport
  - WebGL::memorySize
  - WebPlayer::ScriptingBackend
  - iOS::Architecture
  - iOS::EnableIncrementalBuildSupportForIl2cpp
  - iOS::ScriptingBackend
  Android::ScriptingBackend: 0
  Metro::ScriptingBackend: 2
  Standalone::ScriptingBackend: 0
  WP8::ScriptingBackend: 2
  WebGL::ScriptingBackend: 1
  WebGL::audioCompressionFormat: 4
  WebGL::exceptionSupport: 1
  WebGL::memorySize: 256
  WebPlayer::ScriptingBackend: 0
  iOS::Architecture: 2
  iOS::EnableIncrementalBuildSupportForIl2cpp: 1
  iOS::ScriptingBackend: 1
  boolPropertyNames:
  - WebGL::analyzeBuildSize
  - WebGL::dataCaching
  - WebGL::useEmbeddedResources
  - XboxOne::enus
  WebGL::analyzeBuildSize: 0
  WebGL::dataCaching: 0
  WebGL::useEmbeddedResources: 0
  XboxOne::enus: 1
  stringPropertyNames:
  - WebGL::emscriptenArgs
  - WebGL::template
  - additionalIl2CppArgs::additionalIl2CppArgs
  WebGL::emscriptenArgs:
  WebGL::template: APPLICATION:Default
  additionalIl2CppArgs::additionalIl2CppArgs:
  firstStreamedSceneWithResources: 0
  cloudProjectId:
  projectName:
  organizationId:
  cloudEnabled: 0
 
  m_EditorVersion: 5.2.4f1
  m_StandardAssetsVersion: 0
 
  %YAML 1.1
  %TAG !u! tag:unity3d.com,2011:
  --- !u!47 &1
  QualitySettings:
  m_ObjectHideFlags: 0
  serializedVersion: 5
  m_CurrentQuality: 5
  m_QualitySettings:
  - serializedVersion: 2
  name: Fastest
  pixelLightCount: 0
  shadows: 0
  shadowResolution: 0
  shadowProjection: 1
  shadowCascades: 1
  shadowDistance: 15
  shadowNearPlaneOffset: 2
  shadowCascade2Split: .333333343
  shadowCascade4Split: {x: .0666666701, y: .200000003, z: .466666669}
  blendWeights: 1
  textureQuality: 1
  anisotropicTextures: 0
  antiAliasing: 0
  softParticles: 0
  softVegetation: 0
  realtimeReflectionProbes: 0
  billboardsFaceCameraPosition: 0
  vSyncCount: 0
  lodBias: .300000012
  maximumLODLevel: 0
  particleRaycastBudget: 4
  excludedTargetPlatforms: []
  - serializedVersion: 2
  name: Fast
  pixelLightCount: 0
  shadows: 0
  shadowResolution: 0
  shadowProjection: 1
  shadowCascades: 1
  shadowDistance: 20
  shadowNearPlaneOffset: 2
  shadowCascade2Split: .333333343
  shadowCascade4Split: {x: .0666666701, y: .200000003, z: .466666669}
  blendWeights: 2
  textureQuality: 0
  anisotropicTextures: 0
  antiAliasing: 0
  softParticles: 0
  softVegetation: 0
  realtimeReflectionProbes: 0
  billboardsFaceCameraPosition: 0
  vSyncCount: 0
  lodBias: .400000006
  maximumLODLevel: 0
  particleRaycastBudget: 16
  excludedTargetPlatforms: []
  - serializedVersion: 2
  name: Simple
  pixelLightCount: 1
  shadows: 1
  shadowResolution: 0
  shadowProjection: 1
  shadowCascades: 1
  shadowDistance: 20
  shadowNearPlaneOffset: 2
  shadowCascade2Split: .333333343
  shadowCascade4Split: {x: .0666666701, y: .200000003, z: .466666669}
  blendWeights: 2
  textureQuality: 0
  anisotropicTextures: 1
  antiAliasing: 0
  softParticles: 0
  softVegetation: 0
  realtimeReflectionProbes: 0
  billboardsFaceCameraPosition: 0
  vSyncCount: 0
  lodBias: .699999988
  maximumLODLevel: 0
  particleRaycastBudget: 64
  excludedTargetPlatforms: []
  - serializedVersion: 2
  name: Good
  pixelLightCount: 2
  shadows: 2
  shadowResolution: 1
  shadowProjection: 1
  shadowCascades: 2
  shadowDistance: 40
  shadowNearPlaneOffset: 2
  shadowCascade2Split: .333333343
  shadowCascade4Split: {x: .0666666701, y: .200000003, z: .466666669}
  blendWeights: 2
  textureQuality: 0
  anisotropicTextures: 1
  antiAliasing: 0
  softParticles: 0
  softVegetation: 1
  realtimeReflectionProbes: 1
  billboardsFaceCameraPosition: 1
  vSyncCount: 1
  lodBias: 1
  maximumLODLevel: 0
  particleRaycastBudget: 256
  excludedTargetPlatforms: []
  - serializedVersion: 2
  name: Beautiful
  pixelLightCount: 3
  shadows: 2
  shadowResolution: 2
  shadowProjection: 1
  shadowCascades: 2
  shadowDistance: 70
  shadowNearPlaneOffset: 2
  shadowCascade2Split: .333333343
  shadowCascade4Split: {x: .0666666701, y: .200000003, z: .466666669}
  blendWeights: 4
  textureQuality: 0
  anisotropicTextures: 2
  antiAliasing: 2
  softParticles: 1
  softVegetation: 1
  realtimeReflectionProbes: 1
  billboardsFaceCameraPosition: 1
  vSyncCount: 1
  lodBias: 1.5
  maximumLODLevel: 0
  particleRaycastBudget: 1024
  excludedTargetPlatforms: []
  - serializedVersion: 2
  name: Fantastic
  pixelLightCount: 4
  shadows: 2
  shadowResolution: 2
  shadowProjection: 1
  shadowCascades: 4
  shadowDistance: 150
  shadowNearPlaneOffset: 2
  shadowCascade2Split: .333333343
  shadowCascade4Split: {x: .0666666701, y: .200000003, z: .466666669}
  blendWeights: 4
  textureQuality: 0
  anisotropicTextures: 2
  antiAliasing: 2
  softParticles: 1
  softVegetation: 1
  realtimeReflectionProbes: 1
  billboardsFaceCameraPosition: 1
  vSyncCount: 1
  lodBias: 2
  maximumLODLevel: 0
  particleRaycastBudget: 4096
  excludedTargetPlatforms: []
  m_PerPlatformDefaultQuality:
  Android: 2
  BlackBerry: 2
  GLES Emulation: 5
  Nintendo 3DS: 5
  PS3: 5
  PS4: 5
  PSM: 5
  PSP2: 2
  Samsung TV: 2
  Standalone: 5
  Tizen: 2
  WP8: 5
  Web: 5
  WebGL: 3
  Wii U: 5
  Windows Store Apps: 5
  XBOX360: 5
  XboxOne: 5
  iPhone: 2
 
  %YAML 1.1
  %TAG !u! tag:unity3d.com,2011:
  --- !u!78 &1
  TagManager:
  serializedVersion: 2
  tags: []
  layers:
  - Default
  - TransparentFX
  - Ignore Raycast
  -
  - Water
  - UI
  -
  -
  -
  -
  -
  -
  -
  -
  -
  -
  -
  -
  -
  -
  -
  -
  -
  -
  -
  -
  -
  -
  -
  -
  -
  -
  m_SortingLayers:
  - name: Default
  uniqueID: 0
  locked: 0
 
  %YAML 1.1
  %TAG !u! tag:unity3d.com,2011:
  --- !u!5 &1
  TimeManager:
  m_ObjectHideFlags: 0
  Fixed Timestep: .0199999996
  Maximum Allowed Timestep: .333333343
  m_TimeScale: 1
 
  %YAML 1.1
  %TAG !u! tag:unity3d.com,2011:
  --- !u!292 &1
  UnityAdsSettings:
  m_ObjectHideFlags: 0
  m_Enabled: 0
  m_InitializeOnStartup: 1
  m_TestMode: 0
  m_EnabledPlatforms: 4294967295
  m_IosGameId:
  m_AndroidGameId:
 
  %YAML 1.1
  %TAG !u! tag:unity3d.com,2011:
  --- !u!303 &1
  UnityAnalyticsManager:
  m_ObjectHideFlags: 0
  m_Enabled: 0
  m_InitializeOnStartup: 1
  m_TestMode: 0
  m_TestEventUrl:
  m_TestConfigUrl:
 
 Binary files /dev/null and b/Publishing/CurseLogo.png differ
 Binary files /dev/null and b/Publishing/CurseLogo.psd differ