public void OnDestroy()
        {
            if (_portrait != null)
            {
                _portrait.Release();
            }

            if (_instructor != null)
            {
                Destroy(_instructor.gameObject);
            }
            if (enable)
            {
                RBMenuAppLToolBar.Destroy();
            }
            GameEvents.onGUIRnDComplexDespawn.Remove(TurnUIOff);
            GameEvents.onGUIMissionControlDespawn.Remove(TurnUIOff);
            GameEvents.onGUIAstronautComplexSpawn.Remove(TurnUIOff);
            GameEvents.onGUIAdministrationFacilitySpawn.Remove(TurnUIOff);
            GameEvents.onGUIRnDComplexDespawn.Remove(TurnUIOn);
            GameEvents.onGUIMissionControlDespawn.Remove(TurnUIOn);
            GameEvents.onGUIAstronautComplexDespawn.Remove(TurnUIOn);
            GameEvents.onGUIAdministrationFacilityDespawn.Remove(TurnUIOn);
            GameEvents.onVesselSOIChanged.Remove(onVesselSOIChanged);
            if (HighLogic.CurrentGame.Mode == Game.Modes.CAREER)
            {
                GameEvents.Contract.onOffered.Remove(CheckContracts);
            }
        }
        public void Start()
        {
            isTSTInstalled  = Database.instance.isTSTInstalled;
            isPCBMInstalled = Utilities.IsPCBMInstalled;
            if (isPCBMInstalled)  //If Progressive CB Maps assembly is present, initialise PCBM wrapper.
            {
                PCBMWrapper.InitPCBMWrapper();
                if (!PCBMWrapper.APIPCBMReady)
                {
                    isPCBMInstalled = false; //If the initialise of wrapper failed set bool to false, we won't be interfacing to PCBM today.
                }
            }
            enable = ResearchBodies.enabled;

            //Create Instructor
            _instructor = Create("Instructor_Wernher");

            //Register for Contract On offerred so we can remove ones that are for bodies not yet tracked.
            if (HighLogic.CurrentGame.Mode == Game.Modes.CAREER)
            {
                GameEvents.Contract.onOffered.Add(CheckContracts);
            }

            //If RB is enabled set initial Discovery Levels of CBs and call ProgressiveCBMaps to set their graphics levels.
            if (enable)
            {
                SetBodyDiscoveryLevels();

                if (!ToolbarManager.ToolbarAvailable && !Database.instance.UseAppLauncher)
                {
                    Database.instance.UseAppLauncher = true;
                }
                RBMenuAppLToolBar.Start(Database.instance.UseAppLauncher);
                GameEvents.onGUIRnDComplexSpawn.Add(TurnUIOff);
                GameEvents.onGUIMissionControlSpawn.Add(TurnUIOff);
                GameEvents.onGUIAstronautComplexSpawn.Add(TurnUIOff);
                GameEvents.onGUIAdministrationFacilitySpawn.Add(TurnUIOff);
                GameEvents.onGUIRnDComplexDespawn.Add(TurnUIOn);
                GameEvents.onGUIMissionControlDespawn.Add(TurnUIOn);
                GameEvents.onGUIAstronautComplexDespawn.Add(TurnUIOn);
                GameEvents.onGUIAdministrationFacilityDespawn.Add(TurnUIOn);
                GameEvents.onVesselSOIChanged.Add(onVesselSOIChanged);
                Utilities.setScaledScreen();

                difficulty           = ResearchBodies.Instance.RBgameSettings.Difficulty;
                ResearchCost         = ResearchBodies.Instance.RBgameSettings.ResearchCost;
                ScienceReward        = ResearchBodies.Instance.RBgameSettings.ScienceReward;
                ProgressResearchCost = ResearchBodies.Instance.RBgameSettings.ProgressResearchCost;
            }
        }