예제 #1
0
        public override void Jettison()
        {
            if (_targetDecoupler == null || !_targetDecoupler || !(_targetDecoupler is IStageSeparator))
            {
                return;
            }


            ModuleDecouple decouple = _targetDecoupler as ModuleDecouple;

            if (decouple != null)
            {
                decouple.ejectionForce *= 5;
                decouple.Decouple();
            }
            else
            {
                ((ModuleAnchoredDecoupler)_targetDecoupler).ejectionForce *= 5;
                ((ModuleAnchoredDecoupler)_targetDecoupler).Decouple();
            }

            if (BDArmorySetup.Instance.ActiveWeaponManager != null)
            {
                BDArmorySetup.Instance.ActiveWeaponManager.UpdateList();
            }
        }
예제 #2
0
        bool CheckForEnginePlate(Part parent, Part checking)
        {
            // The following code is designed to deal with the new engine plates in MakingHistory, which have embedded
            // decouplers which work on the stage below
            ModuleDecouple md = null;

            // First, if this is an engineplate, do not treat it as a decoupler
            if (checking.Modules.Contains("ModuleDynamicNodes") && checking.Modules.Contains("ModuleDecouple"))
            {
                md = checking.Modules.GetModule <ModuleDecouple>();

                if (md.isEnginePlate)
                {
                    // If the parent IS an engineplate, get the module and use it later
                    if (parent.Modules.Contains("ModuleDynamicNodes") && parent.Modules.Contains("ModuleDecouple"))
                    {
                        pm = parent.Modules.GetModule <ModuleDecouple>();
                    }
                    else
                    {
                        pm = null;
                    }
                }

                return(md.isEnginePlate);
            }
            return(false);
        }
예제 #3
0
 public override void OnStart(StartState state)
 {
     Debug.Log(string.Format("{0} ModulePebkacLesEscape.OnStart", _myModTag));
     _escapeEngine    = GetEscapeEngine();
     _escapeDecoupler = GetEscapeDecoupler();
     base.OnStart(state);
 }
예제 #4
0
        public static bool IsUnfiredDecoupler(this Part p)
        {
            for (int i = 0; i < p.Modules.Count; i++)
            {
                PartModule     m         = p.Modules[i];
                ModuleDecouple mDecouple = m as ModuleDecouple;
                if (mDecouple != null)
                {
                    if (!mDecouple.isDecoupled)
                    {
                        return(true);
                    }
                    break;
                }

                ModuleAnchoredDecoupler mAnchoredDecoupler = m as ModuleAnchoredDecoupler;
                if (mAnchoredDecoupler != null)
                {
                    if (!mAnchoredDecoupler.isDecoupled)
                    {
                        return(true);
                    }
                    break;
                }

                if (m.ClassName == "ProceduralFairingDecoupler")
                {
                    return(true);
                }
            }
            return(false);
        }
예제 #5
0
        public override void OnStart(StartState state)
        {
            base.OnStart(state);

            multiModeEngine = this.part.FindModuleImplementing <MultiModeEngine>();
            if (multiModeEngine != null)
            {
                multiModeEngine.Fields["mode"].guiActiveEditor              = false;
                multiModeEngine.Fields["mode"].guiActive                    = false;
                multiModeEngine.Events["DisableAutoSwitch"].guiActive       = false;
                multiModeEngine.Events["DisableAutoSwitch"].guiActiveEditor = false;
                multiModeEngine.Events["EnableAutoSwitch"].guiActive        = false;
                multiModeEngine.Events["EnableAutoSwitch"].guiActiveEditor  = false;
                multiModeEngine.Events["ModeEvent"].guiActive               = false;
                multiModeEngine.Events["ModeEvent"].guiActiveEditor         = false;
            }

            decoupler = this.part.FindModuleImplementing <ModuleDecouple>();
            if (decoupler != null)
            {
                decoupler.isEnabled      = false;
                decoupler.enabled        = false;
                decoupler.stagingEnabled = false;
            }
        }
예제 #6
0
        // Used to find when decouplers fire
        public void onVesselStageSeparate(EventReport report)
        {
            //Debug.Log("handling separation");

            Part part = report.origin;

            if (part.vessel.vesselType == VesselType.Debris)
            {
                foreach (PartModule module in part.Modules)
                {
                    if (module.moduleName.Contains("ModuleDecouple"))
                    {
                        ModuleDecouple md = module as ModuleDecouple;
                        ejectionForceTotal += md.ejectionForce;
                    }
                    else if (module.moduleName.Contains("ModuleAnchoredDecoupler"))
                    {
                        ModuleAnchoredDecoupler md = module as ModuleAnchoredDecoupler;
                        ejectionForceTotal += md.ejectionForce;
                    }

                    ejectionForceTotal = Mathf.Clamp(ejectionForceTotal, 0, maxDecoupleForce);
                }
            }
        }
예제 #7
0
        public override void OnStart(StartState state)
        {
            decouple = part.FindModuleImplementing <ModuleDecouple>();
            if (decouple == null)
            {
                Debug.LogError($"[ProceduralParts] No ModuleDecouple found on {part}");
                isEnabled = enabled = false;
                return;
            }

            if (HighLogic.LoadedSceneIsEditor)
            {
                Fields[nameof(isOmniDecoupler)].guiActiveEditor =
                    string.IsNullOrEmpty(separatorTechRequired) || ResearchAndDevelopment.GetTechnologyState(separatorTechRequired) == RDTech.State.Available;

                if (ejectionImpulse < float.Epsilon || float.IsNaN(ejectionImpulse))
                {
                    ejectionImpulse = decouple.ejectionForce * ImpulsePerForceUnit;
                }

                (Fields[nameof(ejectionImpulse)].uiControlEditor as UI_FloatEdit).maxValue = maxImpulse;
            }
            else if (HighLogic.LoadedSceneIsFlight)
            {
                if (float.IsNaN(ejectionImpulse))
                {
                    ejectionImpulse = 0;
                }
                decouple.isOmniDecoupler = isOmniDecoupler;
                decouple.ejectionForce   = ejectionImpulse / TimeWarp.fixedDeltaTime;
                GameEvents.onTimeWarpRateChanged.Add(OnTimeWarpRateChanged);
            }
        }
        protected void setupDecoupler()
        {
            ModuleDecouple decoupler = this.part.FindModuleImplementing <ModuleDecouple>();

            if (!decoupler)
            {
                return;
            }

            if (decouplerEnabled)
            {
                Events["ToggleDecouplerEnabled"].guiName = "Disable Decoupler";
                this.part.stagingOn = true;
                decoupler.enabled   = true;
                decoupler.isEnabled = true;
                decoupler.Events["ToggleStaging"].Invoke();
                decoupler.stagingEnabled = true;
            }

            else
            {
                Events["ToggleDecouplerEnabled"].guiName = "Enable Decoupler";
                decoupler.Events["ToggleStaging"].Invoke();
                decoupler.stagingEnabled = false;
                decoupler.enabled        = false;
                decoupler.isEnabled      = false;
            }
        }
예제 #9
0
        public static bool IsUnfiredDecoupler(this Part p)
        {
            foreach (PartModule m in p.Modules)
            {
                ModuleDecouple mDecouple = m as ModuleDecouple;
                if (mDecouple != null)
                {
                    if (!mDecouple.isDecoupled)
                    {
                        return(true);
                    }
                    break;
                }

                ModuleAnchoredDecoupler mAnchoredDecoupler = m as ModuleAnchoredDecoupler;
                if (mAnchoredDecoupler != null)
                {
                    if (!mAnchoredDecoupler.isDecoupled)
                    {
                        return(true);
                    }
                    break;
                }
            }
            return(false);
        }
        private ModuleDecouple GetDecouple()
        {
            ModuleDecouple d = null;

            d = part.FindModuleImplementing <ModuleDecouple>();

            return(d);
        }
예제 #11
0
 internal Decoupler (Part part)
 {
     this.part = part;
     decoupler = part.InternalPart.Module<ModuleDecouple> ();
     anchoredDecoupler = part.InternalPart.Module<ModuleAnchoredDecoupler> ();
     if (decoupler == null && anchoredDecoupler == null)
         throw new ArgumentException ("Part does not have a ModuleDecouple or ModuleAnchoredDecouple PartModule");
 }
예제 #12
0
 private bool FindDecoupler()
 {
     if (decouple == null)
     {
         decouple = part.Modules["ModuleDecouple"] as ModuleDecouple;
     }
     return(decouple != null);
 }
        public void Start()
        {
            animationStates = SetUpAnimation(animationName, this.part);
            //if (part.stagingIcon == "")
            //    part.stagingIcon = "DECOUPLER_HOR";

            List <ModuleDecouple> decouplers = new List <ModuleDecouple>();

            decouplers = this.GetComponents <ModuleDecouple>().ToList();
            foreach (ModuleDecouple d in decouplers)
            {
                if (d.explosiveNodeID == decouplerNodeID)
                {
                    decoupler = d;
                    decoupler.Actions["DecoupleAction"].active = false;
                    decoupler.Events["Decouple"].active        = false;
                    decoupler.Events["ToggleStaging"].active   = false;
                }
                else if (payloadDecouplerNodeID != "" && d.explosiveNodeID == payloadDecouplerNodeID)
                {
                    payloadDecoupler = d;
                    payloadDecoupler.Actions["DecoupleAction"].guiName      = "Decouple Payload";
                    payloadDecoupler.Fields["ejectionForcePercent"].guiName = "Force Percent (Payload)";
                }
            }
            if (decoupler == null)
            {
                Debug.LogErrorFormat("[{0}] A '{1}' node decoupler was not found.", moduleID, decouplerNodeID);
            }
            if (payloadDecouplerNodeID != "" && payloadDecoupler == null)
            {
                Debug.LogErrorFormat("[{0}] A '{1}' node decoupler was not found.", moduleID, payloadDecouplerNodeID);
            }

            if (HighLogic.LoadedSceneIsFlight)
            {
                decoupled = decoupler != null && decoupler.isDecoupled;
                if (payloadDecoupler != null)
                {
                    payloadDecoupler.isEnabled = decoupled;
                }
            }


            foreach (AnimationState anim in animationStates)
            {
                if (decoupled)
                {
                    anim.normalizedTime = 1f;
                }
                else
                {
                    anim.normalizedTime = 0f;
                }
            }
            Events["ToggleAnimationEditor"].guiName = editorGUIName;
        }
예제 #14
0
        public override void OnStart(StartState state)
        {
            if (!HighLogic.LoadedSceneIsFlight)
            {
                return;
            }

            decoupler = part.FindModuleImplementing <ModuleDecouple>();
        }
예제 #15
0
        private void decoupleByModule(int index)
        {
            ModuleDecouple d = (ModuleDecouple)part.Modules[index];

            if (!d.isDecoupled)
            {
                d.Decouple();
            }
        }
예제 #16
0
 private bool FindDecoupler()
 {
     ROLLog.debug("Finding Decoupler...");
     if (decouple == null)
     {
         decouple = part.Modules["ModuleDecouple"] as ModuleDecouple;
     }
     return(decouple != null);
 }
예제 #17
0
 internal Decoupler(Part part)
 {
     this.part         = part;
     decoupler         = part.InternalPart.Module <ModuleDecouple> ();
     anchoredDecoupler = part.InternalPart.Module <ModuleAnchoredDecoupler> ();
     if (decoupler == null && anchoredDecoupler == null)
     {
         throw new ArgumentException("Part is not a decoupler");
     }
 }
예제 #18
0
        public override void OnStart(StartState state)
        {
            List <ModuleEngines> engines = part.FindModulesImplementing <ModuleEngines>();

            foreach (ModuleEngines e in engines)
            {
                if (e.engineID == _escapeEngineID)
                {
                    _escapeEngine = e;
                }
                else if (e.engineID == _pitchEngineID)
                {
                    _pitchEngine = e;
                }
                else if (e.engineID == _jettisonEngineID)
                {
                    _jettisonEngine = e;
                }
                foreach (BaseAction a in e.Actions)
                {
                    a.active = false;
                }
                foreach (BaseField f in e.Fields)
                {
                    f.guiActive       = false;
                    f.guiActiveEditor = false;
                }
                foreach (BaseEvent ev in e.Events)
                {
                    ev.guiActive       = false;
                    ev.guiActiveEditor = false;
                }
            }

            if (hasPitchControl)
            {
                // set up the variables used to shift aerodynamics
                _maxFuel       = part.Resources["SolidFuel"].maxAmount;
                _origComOffset = part.CoMOffset;
                _origColOffset = part.CoLOffset;

                // set up the variables used by code for simming the canards
                _deployAnimation = GetDeployAnimation();
                _liftingSurface  = GetLiftingSurface();
            }

            // get the decoupler
            _lesDecoupler = part.FindModuleImplementing <ModuleDecouple>();

            if (_lesDecoupler == null)
            {
                Debug.LogError(string.Format("{0}: {1}: {2}", _myModTag, part.name, "Did not find a decoupler on the LES!"));
            }
        }
예제 #19
0
        private void updateDecouplerForce()
        {
            ModuleDecouple dc = part.GetComponent <ModuleDecouple>();

            if (dc != null)
            {
                dc.ejectionForce = forcePerKg * (modifiedMass * 1000f);
                dc.Fields["ejectionForce"].guiName         = "Ejection Force";
                dc.Fields["ejectionForce"].guiActiveEditor = true;
            }
        }
예제 #20
0
        public override void OnLoad(ConfigNode node)
        {
            base.OnLoad(node);

            decoupler = this.part.Modules.OfType <ModuleDecouple>().Single();

            for (int i = 0; i < part.Modules.Count; i++)
            {
                PartModule fx = part.Modules[i];
            }
        }
예제 #21
0
 public override bool oneTimeActivation()
 {
     if (decoupler != null)
     {
         return(decoupler.isDecoupled);
     }
     else
     {
         decoupler = this.part.Modules.OfType <ModuleDecouple>().Single();
         return(false);
     }
 }
예제 #22
0
            private void SetModuleDecouple()
            {
                ModuleDecouple decoupler = module as ModuleDecouple;

                if (decoupler == null)
                {
                    return;
                }

                EjectionForce   = decoupler.ejectionForce;
                IsOmniDecoupler = decoupler.isOmniDecoupler;
            }
예제 #23
0
            private void SetModuleDecouple()
            {
                ModuleDecouple decoupler = module as ModuleDecouple;

                if (decoupler == null)
                {
                    return;
                }

                EjectionForce   = decoupler.ejectionForce;
                IsOmniDecoupler = decoupler.isOmniDecoupler;
                IsStageEnabled  = decoupler.stagingEnabled;
            }
예제 #24
0
        private void decoupleByModule(int index)
        {
            ModuleDecouple d = part.Modules[index] as ModuleDecouple;

            if (d == null)
            {
                MonoBehaviour.print("ERROR: No decoupler found at module index: " + index);
            }
            else if (!d.isDecoupled)
            {
                d.Decouple();
            }
        }
        public void Start()
        {
            animationStates = SetUpAnimation(animationName, this.part);
            //if (part.stagingIcon == "")
            //    part.stagingIcon = "DECOUPLER_HOR";

            List <ModuleDecouple> decouplers = new List <ModuleDecouple>();

            decouplers = this.GetComponents <ModuleDecouple>().ToList();
            foreach (ModuleDecouple d in decouplers)
            {
                if (d.explosiveNodeID == decouplerNodeID)
                {
                    decoupler = d;
                    decoupler.Actions["DecoupleAction"].active = false;
                    decoupler.Events["Decouple"].active        = false;
                    decoupler.Events["ToggleStaging"].active   = false;
                    if (HighLogic.LoadedSceneIsFlight && decoupler.ExplosiveNode.attachedPart != null)
                    {
                        animPosition = 0;
                        animSpeed    = 0;
                    }
                }
                else if (payloadDecouplerNodeID != "" && d.explosiveNodeID == payloadDecouplerNodeID)
                {
                    payloadDecoupler = d;
                    payloadDecoupler.Events["Decouple"].guiName             = "Decouple Payload";
                    payloadDecoupler.Actions["DecoupleAction"].guiName      = "Decouple Payload";
                    payloadDecoupler.Fields["ejectionForcePercent"].guiName = "Force Percent (Payload)";
                    if (HighLogic.LoadedSceneIsFlight)
                    {
                        payloadDecoupler.isEnabled = animPosition >= waitForAnimation;
                    }
                }
            }
            //if (decoupler == null)
            //    Debug.LogErrorFormat("[{0}] A '{1}' node decoupler was not found.", moduleID, decouplerNodeID);
            //if (payloadDecouplerNodeID != "" && payloadDecoupler == null)
            //    Debug.LogErrorFormat("[{0}] A '{1}' node decoupler was not found.", moduleID, payloadDecouplerNodeID);

            SetAnimation(animPosition, 0);
            if (animSpeed != 0)
            {
                PlayAnimation(animSpeed);
            }

            Events["Decouple"].active               = animPosition == 0;
            Events["Decouple"].guiName              = flightGUIName;
            Actions["DecoupleAction"].guiName       = flightGUIName;
            Events["ToggleAnimationEditor"].guiName = editorGUIName;
        }
예제 #26
0
        public void Start()
        {
            animationStates = SetUpAnimation(animationName, this.part);
            //if (part.stagingIcon == "")
            //    part.stagingIcon = "DECOUPLER_HOR";

            List <ModuleDecouple> decouplers = new List <ModuleDecouple>();

            decouplers = this.GetComponents <ModuleDecouple>().ToList();
            foreach (ModuleDecouple d in decouplers)
            {
                if (d.explosiveNodeID == decouplerNodeID)
                {
                    decoupler = d;
                }
                else if (payloadDecouplerNodeID != "" && d.explosiveNodeID == payloadDecouplerNodeID)
                {
                    payloadDecoupler = d;
                }
            }
            if (decoupler == null)
            {
                Debug.LogErrorFormat("[{0}] A '{1}' node decoupler was not found.", moduleID, decouplerNodeID);
            }
            if (payloadDecouplerNodeID != "" && payloadDecoupler == null)
            {
                Debug.LogErrorFormat("[{0}] A '{1}' node decoupler was not found.", moduleID, payloadDecouplerNodeID);
            }

            if (HighLogic.LoadedSceneIsFlight)
            {
                decoupled = decoupler != null && decoupler.isDecoupled;
                if (payloadDecoupler != null)
                {
                    payloadDecoupler.isEnabled = decoupled;
                }
            }


            foreach (AnimationState anim in animationStates)
            {
                if (decoupled)
                {
                    anim.normalizedTime = 1f;
                }
                else
                {
                    anim.normalizedTime = 0f;
                }
            }
        }
        public override void OnStart(StartState state)
        {
            decouple                = GetDecouple();
            minimumCrew             = 0;
            decouple.staged         = false;
            decouple.stagingEnabled = false;

            if (HighLogic.LoadedSceneIsFlight)
            {
                part.force_activate();
                mine = GetMine();
            }
            base.OnStart(state);
        }
 public void Start()
 {
     engineModule = part.GetComponent <ModuleEngines>();
     ModuleDecouple[] decouplers = part.GetComponents <ModuleDecouple>();
     foreach (ModuleDecouple dc in decouplers)
     {
         if (dc != this)
         {
             decoupler = dc; break;
         }
     }
     updateEngineThrust();
     updateShielding();
 }
예제 #29
0
        private static bool IsEnginePlate(Part thePart)
        {
            ModuleDecouple mdec = thePart.GetModule <ModuleDecouple>();

            if (mdec != null && mdec.IsStageable())
            {
                ModuleDynamicNodes mdyn = thePart.GetModule <ModuleDynamicNodes>();
                if (mdyn != null)
                {
                    return(true);
                }
            }

            return(false);
        }
예제 #30
0
 public void Start()
 {
     engineModule = part.GetComponent <ModuleEngines>();
     ModuleDecouple[] decouplers = part.GetComponents <ModuleDecouple>();
     foreach (ModuleDecouple dc in decouplers)
     {
         if (dc != this)
         {
             decoupler = dc; break;
         }
     }
     updateEngineThrust();
     updateShielding();
     Events[nameof(ToggleStaging)].advancedTweakable           = false;
     decoupler.Events[nameof(ToggleStaging)].advancedTweakable = false;
 }
        /// <summary>
        /// Called when the part is started by Unity.
        /// </summary>
        public override void OnStart(StartState state)
        {
            base.OnStart(state);

            if (HighLogic.LoadedSceneIsFlight)
            {
                GameEvents.onStageActivate.Add(new EventData<int>.OnEvent(DetermineFailure));

                decoupler = part.Modules.OfType<ModuleDecouple>().FirstOrDefault<ModuleDecouple>();

                if (!decoupler)
                {
                    aDecoupler = part.Modules.OfType<ModuleAnchoredDecoupler>().FirstOrDefault<ModuleAnchoredDecoupler>();
                }

                if (decoupler)
                {
                    if (failure != "")
                    {
                        decoupler.isDecoupled = true;
                    }
                    decoupler.Events["Decouple"].active = false;
                    decoupler.Actions["DecoupleAction"].active = false;
                }
                else if (aDecoupler)
                {
                    if (failure != "")
                    {
                        aDecoupler.isDecoupled = true;
                    }
                    aDecoupler.Events["Decouple"].active = false;
                    aDecoupler.Actions["DecoupleAction"].active = false;
                }
                else
                {
                    Logger.DebugError("Part \"" + part.partName + "\" contains neither a decouple or anchored decoupler module!");
                    return;
                }

                Fields["reliability"].guiActive = false;
            }
        }
 public void Start()
 {
     engineModule = part.GetComponent<ModuleEngines>();
     ModuleDecouple[] decouplers = part.GetComponents<ModuleDecouple>();
     foreach (ModuleDecouple dc in decouplers)
     {
         if (dc != this) { decoupler = dc; break; }
     }
     updateEngineThrust();
     updateShielding();
 }
예제 #33
0
 private void FindDecoupler()
 {
     decouple = part.Modules["ModuleDecouple"] as ModuleDecouple;
 }
        public void Start()
        {
            animationStates = SetUpAnimation(animationName, this.part);
            //if (part.stagingIcon == "")
            //    part.stagingIcon = "DECOUPLER_HOR";

            List<ModuleDecouple> decouplers = new List<ModuleDecouple>();
            decouplers = this.GetComponents<ModuleDecouple>().ToList();
            foreach (ModuleDecouple d in decouplers)
            {
                if (d.explosiveNodeID == decouplerNodeID)
                {
                    decoupler = d;
                    decoupler.Actions["DecoupleAction"].active = false;
                    decoupler.Events["Decouple"].active = false;
                    decoupler.Events["ToggleStaging"].active = false;
                }
                else if (payloadDecouplerNodeID != "" && d.explosiveNodeID == payloadDecouplerNodeID)
                {
                    payloadDecoupler = d;
                    payloadDecoupler.Actions["DecoupleAction"].guiName = "Decouple Payload";
                    payloadDecoupler.Fields["ejectionForcePercent"].guiName = "Force Percent (Payload)";
                }
            }
            if (decoupler == null)
                Debug.LogErrorFormat("[{0}] A '{1}' node decoupler was not found.", moduleID, decouplerNodeID);
            if (payloadDecouplerNodeID != "" && payloadDecoupler == null)
                Debug.LogErrorFormat("[{0}] A '{1}' node decoupler was not found.", moduleID, payloadDecouplerNodeID);

            if (HighLogic.LoadedSceneIsFlight)
            {
                decoupled = decoupler != null && decoupler.isDecoupled;
                if (payloadDecoupler != null)
                    payloadDecoupler.isEnabled = decoupled;
            }

            foreach (AnimationState anim in animationStates)
            {
                if (decoupled)
                {
                    anim.normalizedTime = 1f;
                }
                else
                {
                    anim.normalizedTime = 0f;
                }
            }
            Events["ToggleAnimationEditor"].guiName = editorGUIName;
        }
 private bool FindDecoupler()
 {
     if(decouple == null)
         decouple = part.Modules["ModuleDecouple"] as ModuleDecouple;
     return decouple != null;
 }
예제 #36
0
        protected void setupGUI()
        {
            //Hide seat GUI
            seat = this.part.FindModuleImplementing<KerbalSeat>();
            seat.Events["BoardSeat"].guiActive = false;
            seat.Events["BoardSeat"].guiActiveEditor = false;
            seat.Events["BoardSeat"].guiActiveUnfocused = false;

            //Hide probe command GUI
            wingCommander = this.part.FindModuleImplementing<ModuleCommand>();
            wingCommander.Events["MakeReference"].guiActive = false;
            wingCommander.Events["MakeReference"].guiActiveUnfocused = false;
            wingCommander.Events["RenameVessel"].guiActive = false;

            //Hide decoupler GUI
            decoupler = this.part.FindModuleImplementing<ModuleDecouple>();
            decoupler.Events["Decouple"].guiActive = false;
            decoupler.Events["Decouple"].guiActiveEditor = false;
            decoupler.Events["Decouple"].guiActiveUnfocused = false;

            //Hide MultiModeEngine toggle button
            multiModeEngine = this.part.FindModuleImplementing<MultiModeEngine>();
            multiModeEngine.Events["ModeEvent"].guiActive = false;
            multiModeEngine.Events["ModeEvent"].guiActiveEditor = false;
            multiModeEngine.Events["ModeEvent"].guiActiveUnfocused = false;

            //Hide the Close Intake button.
            ModuleResourceIntake intake = this.part.FindModuleImplementing<ModuleResourceIntake>();
            intake.Events["Deactivate"].guiActive = false;

            //Hide RCS GUI
            ModuleRCS rcs = this.part.FindModuleImplementing<ModuleRCS>();
            rcs.Fields["realISP"].guiActive = false;
            rcs.Events["Disable"].guiActive = false;

            //Hide hover engine gui
            hoverEngine = this.part.FindModuleImplementing<WBIMultiEngineHover>();
            hoverEngine.SetGUIVisible(false);

            //Set fuel type
            resourceSwitcher = this.part.FindModuleImplementing<WBIResourceSwitcher>();
            resourceSwitcher.Fields["shortName"].guiName = "Fuel Type";
        }