protected override void draw_gui()
        {
            //handle collapsed state
            if (Collapsed)
            {
                if (ShowOnHover)
                {
                    if (Event.current.type == EventType.Repaint)
                    {
                        draw_main_window = WindowPos.Contains(Event.current.mousePosition);
                    }
                    if (!draw_main_window)
                    {
                        UnlockControls();
                        var prefix = CFG.Enabled?
                                     "<b><color=lime>TCA: </color></b>" :
                                     (VSL.LandedOrSplashed? "<b>TCA: </b>" : "<b><color=red>TCA: </color></b>");
                        GUI.Label(collapsed_rect, prefix + StatusString(), Styles.boxed_label);
                    }
                }
                else
                {
                    UnlockControls();
                    GUI.Label(collapsed_rect, new GUIContent("TCA", "Push to show Main Window"),
                              CFG.Enabled? Styles.green : (VSL.LandedOrSplashed? Styles.white : Styles.red));
                    if (Input.GetMouseButton(0) && collapsed_rect.Contains(Event.current.mousePosition))
                    {
                        Collapsed = false;
                    }
                    TooltipManager.GetTooltip();
                }
            }
            else
            {
                draw_main_window = true;
            }
            //draw main window if allowed
            if (draw_main_window)
            {
                LockControls();
                WindowPos =
                    GUILayout.Window(TCA.GetInstanceID(),
                                     WindowPos,
                                     DrawMainWindow,
                                     RemoteControl? "RC: " + vessel.vesselName : vessel.vesselName,
                                     GUILayout.Width(ControlsWidth),
                                     GUILayout.Height(50)).clampToScreen();
                update_collapsed_rect();
            }
            //draw waypoints and all subwindows
            if (RemoteControl && Event.current.type == EventType.Repaint)
            {
                Markers.DrawWorldMarker(TCA.vessel.transform.position, Color.green,
                                        "Remotely Controlled Vessel", NavigationTab.PathNodeMarker, 8);
            }
            if (NAV != null)
            {
                NAV.DrawWaypoints();
            }
            AllWindows.ForEach(w => w.Draw());
            ModulesGraph.Draw();

                        #if DEBUG
            GUI.Label(debug_rect,
                      string.Format("[{0}] {1:HH:mm:ss.fff}",
                                    TCA != null && vessel != null? vessel.situation.ToString() : "",
                                    DateTime.Now),
                      Styles.boxed_label);
                        #endif
        }
 protected override void draw_gui()
 {
     //draw main window if allowed
     if (draw_main_window)
     {
         LockControls();
         WindowPos =
             GUILayout.Window(TCA.GetInstanceID(),
                              WindowPos,
                              DrawMainWindow,
                              RemoteControl? "RC: " + vessel.vesselName : vessel.vesselName,
                              GUILayout.Width(ControlsWidth),
                              GUILayout.Height(50)).clampToScreen();
         update_collapsed_rect();
     }
     //handle collapsed state
     if (Collapsed)
     {
         if (ShowOnHover)
         {
             if (!draw_main_window)
             {
                 UnlockControls();
                 var prefix = CFG.Enabled?
                              Colors.Enabled.Tag("<b>TCA</b>") :
                              (VSL.LandedOrSplashed? "<b>TCA</b>" :
                               Colors.Danger.Tag("<b>TCA</b>"));
                 GUI.Label(collapsed_rect, prefix, Styles.boxed_label);
             }
             if (Event.current.type == EventType.Repaint)
             {
                 if (WindowPos.Contains(Event.current.mousePosition))
                 {
                     draw_main_window = ShowOnHover_fade_in_timer.TimePassed;
                     if (draw_main_window)
                     {
                         ShowOnHover_fade_out_timer.Reset();
                     }
                 }
                 else
                 {
                     draw_main_window = !ShowOnHover_fade_out_timer.TimePassed;
                     if (!draw_main_window)
                     {
                         ShowOnHover_fade_in_timer.Reset();
                     }
                 }
             }
         }
         else
         {
             UnlockControls();
             draw_main_window = false;
             GUI.Label(collapsed_rect, new GUIContent("TCA", "Push to show Main Window"),
                       CFG.Enabled? Styles.enabled : (VSL.LandedOrSplashed? Styles.white : Styles.danger));
             if (Input.GetMouseButton(0) && collapsed_rect.Contains(Event.current.mousePosition))
             {
                 draw_main_window = true;
                 Collapsed        = false;
             }
             TooltipManager.GetTooltip();
         }
     }
     else
     {
         draw_main_window = true;
     }
     //draw waypoints
     NAV?.DrawWaypoints();
     if (RemoteControl &&
         Event.current.type == EventType.Repaint)
     {
         Markers.DrawWorldMarker(TCA.vessel.transform.position, Colors.Good,
                                 "Remotely Controlled Vessel", NavigationTab.PathNodeMarker, 8);
     }
 }