コード例 #1
0
        public void Start()
        {
            heatModule = this.GetComponents <ModuleSystemHeat>().ToList().Find(x => x.moduleID == systemHeatModuleID);
            if (heatModule == null)
            {
                heatModule.GetComponent <ModuleSystemHeat>();
            }

            if (engineModuleID != "")
            {
                engineModule = this.GetComponents <ModuleEngines>().ToList().Find(x => x.engineID == engineModuleID);
            }

            if (engineModule == null)
            {
                engineModule = this.GetComponent <ModuleEngines>();
            }

            multiModule = this.GetComponent <MultiModeEngine>();

            if (SystemHeatSettings.DebugModules)
            {
                Utils.Log("[ModuleSystemHeatEngine] Setup completed");
            }
        }
コード例 #2
0
        public void Start()
        {
            animationStates = SetUpAnimation(animationName, this.part);
            Events["ToggleAnimationEditor"].guiActive = !isOneShot;

            if (HighLogic.LoadedSceneIsFlight)
            {
                engines         = this.GetComponents <ModuleEngines>().ToList();
                multiController = this.GetComponent <MultiModeEngine>();
                if (multiController != null)
                {
                    hasMultiEngine = true;
                }

                wantEngineOn = QueryEngineOn();
                if (wantEngineOn)
                {
                    deployed = true;
                }
            }

            if (deployed)
            {
                SetAnimation(1, 0);
            }
            else
            {
                SetAnimation(0, 0);
            }
        }
コード例 #3
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;
            }
        }
コード例 #4
0
        public void SetRunningPrimary(bool state)
        {
            try
            {
                if (mmeIndex > -1)
                {
                    MultiModeEngine mme = part.Modules[mmeIndex] as MultiModeEngine;

                    // There doesn't appear to be a simpler way to switch modes.
                    // One this I could do is store the even index instead of looping
                    // over it every time we change modes.
                    if (mme.runningPrimary != state)
                    {
                        var ev = mme.Events["ModeEvent"];
                        if (ev != null)
                        {
                            ev.Invoke();
                        }
                    }
                }
            }
            catch
            {
                // no-op
            }
        }
コード例 #5
0
        public void Start()
        {
            animationStates = SetUpAnimation(animationName, this.part);

            if (HighLogic.LoadedSceneIsFlight)
            {
                engines    = this.GetComponents <ModuleEngines>().ToList();
                engineIsOn = QueryEngineOn() || (isOneShot && deployed);

                multiController = this.GetComponent <MultiModeEngine>();
                if (multiController != null)
                {
                    hasMultiEngine = true;
                }
            }


            foreach (AnimationState anim in animationStates)
            {
                if (engineIsOn)
                {
                    anim.normalizedTime = 1f;
                }
                else
                {
                    anim.normalizedTime = 0f;
                }
            }
        }
コード例 #6
0
        protected void setupEngines()
        {
            //See if we have multiple engines that we need to support
            engineSwitcher = this.part.FindModuleImplementing <MultiModeEngine>();
            if (engineSwitcher != null)
            {
                List <ModuleEnginesFX> engines = this.part.FindModulesImplementing <ModuleEnginesFX>();

                foreach (ModuleEnginesFX multiEngine in engines)
                {
                    multiModeEngines.Add(multiEngine.engineID, multiEngine);
                }

                if (engineSwitcher.runningPrimary)
                {
                    engine = multiModeEngines[engineSwitcher.primaryEngineID];
                }
                else
                {
                    engine = multiModeEngines[engineSwitcher.secondaryEngineID];
                }

                return;
            }

            //Normal case: we only have one engine to support
            engine = this.part.FindModuleImplementing <ModuleEnginesFX>();
        }
コード例 #7
0
        public override void OnAwake()
        {
            engines.AddUniqueRange(part.FindModulesImplementing <ModuleEngines>().FindAll(x => x.minThrust > 0));
            engines.AddUniqueRange(part.FindModulesImplementing <ModuleEnginesFX>().ConvertAll(x => x as ModuleEngines).FindAll(x => x.minThrust > 0));
            // Only looking for engines with nonzero minthrusts, so e.g. only the secondary mode of the RAPIER.

            if (part.FindModuleImplementing <MultiModeEngine>() != null)
            {
                mmeng = part.FindModuleImplementing <MultiModeEngine>();
            }

            if (engines.Count == 1)
            {
                engine = engines[0];
            }
            else
            {
                if (mmeng != null)
                {
                    engine = engines.Find(x => x.engineID.Equals(mmeng.primaryEngineID));
                }
                else
                {
                    engine = engines[0];
                }
            }
        }
コード例 #8
0
        public void Start()
        {
            engineStates = SetUpAnimation(EngineAnimationName, this.part);

            if (HighLogic.LoadedSceneIsFlight || HighLogic.LoadedSceneIsEditor)
            {
                //engines = this.GetComponents<ModuleEnginesFX>().ToList();
                multiController = this.GetComponent<MultiModeEngine>();
                if (multiController != null)
                {
                    
                    foreach (AnimationState anim in engineStates)
                    {
                        anim.enabled = true;
                        if (multiController.runningPrimary)
                        {
                            anim.normalizedTime = 0f;
                        }
                        else
                        {
                            anim.normalizedTime = 1f;
                        }
                    }
                }
            }
        }
        public void Start()
        {
            engineStates = SetUpAnimation(EngineAnimationName, this.part);

            if (HighLogic.LoadedSceneIsFlight || HighLogic.LoadedSceneIsEditor)
            {
                //engines = this.GetComponents<ModuleEnginesFX>().ToList();
                multiController = this.GetComponent <MultiModeEngine>();
                if (multiController != null)
                {
                    foreach (AnimationState anim in engineStates)
                    {
                        anim.enabled = true;
                        if (multiController.runningPrimary)
                        {
                            anim.normalizedTime = 0f;
                        }
                        else
                        {
                            anim.normalizedTime = 1f;
                        }
                    }
                }
            }
        }
コード例 #10
0
 public override bool Initialize(PartModule pm)
 {
     base.Initialize(pm);
     engines     = pm.GetComponents <ModuleEnginesFX>();
     multiEngine = pm.GetComponent <MultiModeEngine>();
     return(true);
 }
コード例 #11
0
        public void Start()
        {
            Events["ToggleAnimationEditor"].guiName = Localizer.Format("#autoLOC_502068");
            engineStates = SetUpAnimation(EngineAnimationName, this.part);

            if (HighLogic.LoadedSceneIsFlight)
            {
                engines    = this.GetComponents <ModuleEnginesFX>().ToList();
                engineIsOn = QueryEngineOn();

                multiController = this.GetComponent <MultiModeEngine>();
                if (multiController != null)
                {
                    hasMultiEngine = true;
                }
            }


            foreach (AnimationState anim in engineStates)
            {
                if (engineIsOn)
                {
                    anim.normalizedTime = 1f;
                }
                else
                {
                    anim.normalizedTime = 0f;
                }
            }
        }
コード例 #12
0
        public override void Start()
        {
            if (HighLogic.LoadedSceneIsEditor || HighLogic.LoadedSceneIsFlight)
            {
                engineOnStates = new List <bool>();
                engines        = new List <EngineBaseData>();
                ModuleEnginesFX[] engineModules = this.GetComponents <ModuleEnginesFX>();
                foreach (ModuleEnginesFX fx in engineModules)
                {
                    engines.Add(new EngineBaseData(fx));
                    engineOnStates.Add(false);
                }
                multiEngine = this.GetComponent <MultiModeEngine>();

                if (GeneratesElectricity)
                {
                }
                else
                {
                    Fields["ReactorOutput"].guiActive = false;
                }
            }

            base.Start();
        }
コード例 #13
0
ファイル: EngineValue.cs プロジェクト: CalebJ2/KOS
        public EngineValue(global::Part part, MultiModeEngine engine, SharedObjects sharedObj)
            : base(part, sharedObj)
        {
            MMengine = engine;

            var moduleEngines = part.Modules.GetModules<ModuleEngines>();
            if (moduleEngines.Count == 2)
            {
                var modEngine1 = moduleEngines.Where(e => e.engineID == MMengine.primaryEngineID).FirstOrDefault();
                if (modEngine1 != null)
                    engine1 = new ModuleEngineAdapter(modEngine1);
                else
                    throw new KOSException("Attempted to build a MultiModeEngine with no engine matching Primary ID");
                var modEngine2 = moduleEngines.Where(e => e.engineID == MMengine.secondaryEngineID).FirstOrDefault();
                if (modEngine2 != null)
                    engine2 = new ModuleEngineAdapter(modEngine2);
                else
                    throw new KOSException("Attempted to build a MultiModeEngine with no engine matching Secondary ID");
            }
            else
            {
                throw new KOSException(string.Format("Attempted to build a MultiModeEngine with {0} engine modules defined instead of 2", moduleEngines.Count));
            }

            MultiMode = true;

            findGimbal();

            EngineInitializeSuffixes();
        }
コード例 #14
0
ファイル: SupernovaController.cs プロジェクト: Angel-125/DSEV
        public void HideGUI()
        {
            List <ModuleEnginesFXWBI> engineList = this.part.FindModulesImplementing <ModuleEnginesFXWBI>();

            multiModeEngine            = this.part.FindModuleImplementing <MultiModeEngine>();
            multiModeEngine.autoSwitch = false;
            multiModeEngine.Events["DisableAutoSwitch"].guiActive       = false;
            multiModeEngine.Events["DisableAutoSwitch"].guiActiveEditor = false;
            multiModeEngine.Events["EnableAutoSwitch"].guiActive        = false;
            multiModeEngine.Events["EnableAutoSwitch"].guiActiveEditor  = false;

            //Hide engine gui
            foreach (ModuleEnginesFXWBI engine in engineList)
            {
                if (engine.engineID == primaryEngineID)
                {
                    primaryEngine = engine;
                }
                else
                {
                    secondaryEngine = engine;
                }

                engine.onActiveDelegate                   = OnEngineActive;
                engine.Events["Activate"].guiActive       = false;
                engine.Events["Shutdown"].guiActive       = false;
                engine.Events["Activate"].guiActiveEditor = false;
                engine.Events["Shutdown"].guiActiveEditor = false;
            }
        }
コード例 #15
0
 public SMIengineWrapper(Part part)
 {
     engine = part.Modules.OfType <ModuleEngines>().FirstOrDefault();
     if (engine != null)
     {
         type = EngineType.ModuleEngine;
     }
     else
     {
         engineFX = part.Modules.OfType <ModuleEnginesFX>().FirstOrDefault();
         if (engineFX != null)
         {
             type = EngineType.ModuleEngineFX;
         }
         else                                                                      //multimode
         {
             engineFX2 = part.Modules.OfType <MultiModeEngine>().FirstOrDefault(); //multimode
             if (engineFX != null)
             {
                 type = EngineType.ModuleEngineFX;                           //multimode
             }
             else
             {
                 smiengine = part.Modules.OfType <SMIengine>().FirstOrDefault();
                 if (smiengine != null)
                 {
                     type = EngineType.SMIengine;
                 }
             }
         }
         Debug.Log("SMIengineWrapper: engine type is " + type.ToString());
     }
 }
コード例 #16
0
        public void Init(IShipconstruct v, CelestialBody body)
        {
            FARHook.UpdateCurrentBody(body);

            int threads = Threading.ThreadPool.ThreadCount;

            simulators.Clear();
            for (int i = 0; i < threads; i++)
            {
                simulators.Add(new InstantConditionSimulationWrapper()); //(InstantConditionSimulationWrapper.Borrow());
            }
            List <Part> oParts = v.Parts;
            int         count  = oParts.Count;

            bool lgWarning = false;
            int  stage     = 0;

            for (int i = 0; i < count; i++)
            {
                if (!lgWarning)
                {
                    ModuleWheels.ModuleWheelDeployment gear = oParts[i].FindModuleImplementing <ModuleWheels.ModuleWheelDeployment>();
                    bool forcedRetract = !oParts[i].ShieldedFromAirstream && gear != null && gear.Position > 0;

                    if (forcedRetract)
                    {
                        lgWarning = true;
                    }
                }

                totalMass += oParts[i].mass + oParts[i].GetResourceMass();
                dryMass   += oParts[i].mass;
                CoM       += (oParts[i].mass + oParts[i].GetResourceMass()) * oParts[i].transform.TransformPoint(oParts[i].CoMOffset);
                CoM_dry   += (oParts[i].mass) * oParts[i].transform.TransformPoint(oParts[i].CoMOffset);

                if (oParts[i].inverseStage > stage)
                {
                    VesselCache.SimulatedEngine.Release(engines);
                    engines.Clear();
                    stage = oParts[i].inverseStage;
                }
                if (oParts[i].inverseStage >= stage)
                {
                    MultiModeEngine multiMode = oParts[i].FindModuleImplementing <MultiModeEngine>();
                    if (multiMode != null)
                    {
                        engines.Add(VesselCache.SimulatedEngine.Borrow(oParts[i].FindModulesImplementing <ModuleEngines>().Find(engine => engine.engineID == multiMode.mode), this));
                    }
                    else
                    {
                        ModuleEngines engine = oParts[i].FindModulesImplementing <ModuleEngines>().FirstOrDefault();
                        if (engine != null)
                        {
                            engines.Add(VesselCache.SimulatedEngine.Borrow(engine, this));
                        }
                    }
                }
            }
        }
コード例 #17
0
        /// <summary>
        /// Start up the module and initialize it
        /// </summary>
        /// <param name="state">The start state of the module</param>
        public override void OnStart(StartState state)
        {
            base.OnStart(state);

            //find the MultiModeEngine if available
            for (int i = 0; i < part.Modules.Count; i++)
            {
                if (part.Modules[i] is MultiModeEngine)
                {
                    engineMode = (MultiModeEngine)part.Modules[i];
                    break;
                }
            }

            //find all the engines
            for (int i = 0; i < part.Modules.Count; i++)
            {
                if (part.Modules[i] is ModuleEngines || part.Modules[i] is ModuleEnginesFX)
                {
                    if (engineMode == null)
                    {
                        primaryEngine = (ModuleEngines)part.Modules[i];
                        break;
                    }
                    else if (engineMode.primaryEngineID == ((ModuleEngines)part.Modules[i]).engineID)
                    {
                        primaryEngine = (ModuleEngines)part.Modules[i];
                    }
                    else
                    {
                        secondaryEngine = (ModuleEngines)part.Modules[i];
                    }
                }
            }

            primaryEngine.Fields["thrustPercentage"].guiActive       = false;
            primaryEngine.Fields["thrustPercentage"].guiActiveEditor = false;

            if (secondaryEngine != null)
            {
                secondaryEngine.Fields["thrustPercentage"].guiActive       = false;
                secondaryEngine.Fields["thrustPercentage"].guiActiveEditor = false;
            }

            thrustTransform     = part.FindModelTransform(thrustVectorTransformName.Trim());
            heightTransform     = part.FindModelTransform(heightTransformName.Trim());
            heightLocalRotation = heightTransform.localRotation;

            updateHoverStatus();
            LoadPIDProfiles(part.partInfo.partConfig);
            updateAndvancedControlVisibility();

            lastPercentage = thrustLimiter;

            if ((!customPID))
            {
                ResetProfile();
            }
        }
コード例 #18
0
ファイル: Engine.cs プロジェクト: Kerbal007/krpc
 Engine(ModuleEngines engine)
 {
     part    = new Part(engine.part);
     engines = new List <ModuleEngines> ();
     engines.Add(engine);
     multiModeEngine = null;
     gimbal          = part.InternalPart.Module <ModuleGimbal> ();
 }
コード例 #19
0
        public override void OnStart(StartState state)
        {
            base.OnStart(state);

            multiMode = FindMultiModeModule();
            if (multiMode == null)
            {
                LogError("Cannot find MultiModeEngine");
            }
        }
コード例 #20
0
ファイル: Engine.cs プロジェクト: Kerbal007/krpc
 internal Engine(Part part)
 {
     this.part       = part;
     engines         = part.InternalPart.Modules.OfType <ModuleEngines> ().ToList();
     multiModeEngine = part.InternalPart.Module <MultiModeEngine> ();
     gimbal          = part.InternalPart.Module <ModuleGimbal> ();
     if (engines.Count == 0)
     {
         throw new ArgumentException("Part is not an engine");
     }
 }
コード例 #21
0
 public bool GetRunningPrimary()
 {
     if (mmeIndex == -1)
     {
         return(true);
     }
     else
     {
         MultiModeEngine mme = part.Modules[mmeIndex] as MultiModeEngine;
         return(mme.runningPrimary);
     }
 }
コード例 #22
0
ファイル: WBIMultiEngineHover.cs プロジェクト: Li0n-0/Buffalo
        public override void OnStart(PartModule.StartState state)
        {
            base.OnStart(state);
            if (HighLogic.LoadedSceneIsFlight)
            {
                multiModeEngine = this.part.FindModuleImplementing <MultiModeEngine>();
                if (multiModeEngine == null)
                {
                    currentEngine = this.part.FindModuleImplementing <ModuleEngines>();
                }

                else //Find the primary and secondary engines
                {
                    List <ModuleEngines> engineList = this.part.FindModulesImplementing <ModuleEngines>();
                    foreach (ModuleEngines engine in engineList)
                    {
                        if (engine.engineID == multiModeEngine.primaryEngineID)
                        {
                            primaryEngine = engine;
                        }
                        else if (engine.engineID == multiModeEngine.secondaryEngineID)
                        {
                            secondaryEngine = engine;
                        }
                    }

                    //Now set the current engine
                    SetCurrentEngine();
                }

                //Set min/max thrust
                SetMinMaxThrust();

                //Set hover state
                if (hoverActive)
                {
                    ActivateHover();
                }
                else
                {
                    DeactivateHover();
                }

                //Set gui visible state
                SetGUIVisible(guiVisible);

                //Get the transforms for the turbine blades
                getTurbineTransforms();

                //Setup the intake for the current engine mode.
                SetupIntake();
            }
        }
コード例 #23
0
 private static bool IsAfterBurnerEngine(MultiModeEngine engine)
 {
     if (engine == null)
     {
         return(false);
     }
     if (!engine)
     {
         return(false);
     }
     return(engine.primaryEngineID == "Dry" && engine.secondaryEngineID == "Wet");
 }
コード例 #24
0
 protected override void Init()
 {
     module = GetComponent<MultiModeEngine> ();
     if (module == null) {
         throw new Exception ("Missing MultiModeEngine component.");
     }
     var engines = module.GetComponents<ModuleEngines> ();
     foreach (var eng in engines) {
         modes [eng.engineID] = eng;
     }
     GimbalRotation.addTo (gameObject);
 }
コード例 #25
0
ファイル: ModuleForces.cs プロジェクト: jgottula/RCSBuildAid
 void Awake()
 {
     module = GetComponent <MultiModeEngine> ();
     if (module == null)
     {
         throw new Exception("Missing MultiModeEngine component.");
     }
     ModuleEnginesFX[] engines = module.GetComponents <ModuleEnginesFX> ();
     foreach (ModuleEnginesFX eng in engines)
     {
         modes [eng.engineID] = eng;
     }
     base.Awake(module);
 }
コード例 #26
0
        internal static Engine Normalise(MultiModeEngine engine)
        {
            var engines = Resources.FindObjectsOfTypeAll<ModuleEnginesFX>()
                .Where(e => e.engineID == engine.primaryEngineID || e.engineID == engine.secondaryEngineID);

            var builder = Engine.CreateEngineWithName(Part.FromGO(engine.gameObject).partInfo.title);

            return engines.Aggregate(builder, (current, engineMode) => current.WithMode(mode =>
            {
                mode.Name = Regex.Replace(engineMode.engineID, "([a-z])([A-Z])", "$1 $2");
                mode.SeaLevelISP = engineMode.atmosphereCurve.Evaluate(1.0f);
                mode.VacuumISP = engineMode.atmosphereCurve.Evaluate(0.0f);
            }));
        }
コード例 #27
0
        public override void TestStartUp()
        {
            base.TestStartUp();

            primaryEngine   = AddPartModule <ModuleEnginesFX>();
            secondaryEngine = AddPartModule <ModuleEnginesFX>();
            multiModeEngine = AddPartModule <MultiModeEngine>();

            primaryEngine.engineID            = "primary";
            secondaryEngine.engineID          = "secondary";
            multiModeEngine.primaryEngineID   = primaryEngine.engineID;
            multiModeEngine.secondaryEngineID = secondaryEngine.engineID;
            multiModeEngine.OnStart(PartModule.StartState.None);
        }
コード例 #28
0
        internal static Engine Normalise(MultiModeEngine engine)
        {
            var engines = Resources.FindObjectsOfTypeAll <ModuleEnginesFX>()
                          .Where(e => e.engineID == engine.primaryEngineID || e.engineID == engine.secondaryEngineID);

            var builder = Engine.CreateEngineWithName(Part.FromGO(engine.gameObject).partInfo.title);

            return(engines.Aggregate(builder, (current, engineMode) => current.WithMode(mode =>
            {
                mode.Name = Regex.Replace(engineMode.engineID, "([a-z])([A-Z])", "$1 $2");
                mode.SeaLevelISP = engineMode.atmosphereCurve.Evaluate(1.0f);
                mode.VacuumISP = engineMode.atmosphereCurve.Evaluate(0.0f);
            })));
        }
コード例 #29
0
        public override void Start()
        {
            if (HighLogic.LoadedSceneIsEditor || HighLogic.LoadedSceneIsFlight)
            {
                engineOnStates = new List <bool>();
                engines        = this.GetComponents <ModuleEnginesFX>().ToList();
                foreach (ModuleEnginesFX fx in engines)
                {
                    engineOnStates.Add(false);
                }
                multiEngine = this.GetComponent <MultiModeEngine>();
            }

            base.Start();
        }
コード例 #30
0
        protected override void Init()
        {
            module = GetComponent <MultiModeEngine> ();
            if (module == null)
            {
                throw new Exception("Missing MultiModeEngine component.");
            }
            var engines = module.GetComponents <ModuleEngines> ();

            foreach (var eng in engines)
            {
                modes [eng.engineID] = eng;
            }
            GimbalRotation.addTo(gameObject);
        }
コード例 #31
0
        void Start()
        {
            if (HighLogic.LoadedSceneIsEditor || HighLogic.LoadedSceneIsFlight)
            {
                engineStates = new Dictionary <ModuleEnginesFX, bool>();

                ModuleEnginesFX[] engines = this.GetComponents <ModuleEnginesFX>();
                foreach (ModuleEnginesFX fx in engines)
                {
                    engineStates.Add(fx, fx.EngineIgnited);
                }
                multiEngine = this.GetComponent <MultiModeEngine>();
            }
            SetupAnimations();
            SetupRecharge();
        }
コード例 #32
0
        public void Start()
        {
            animationStates = SetUpAnimation(animationName, this.part);

            multiController = this.GetComponent <MultiModeEngine>();
            if (multiController != null)
            {
                if (multiController.runningPrimary)
                {
                    SetAnimation(0, 0);
                }
                else
                {
                    SetAnimation(1, 0);
                }
            }
        }
コード例 #33
0
ファイル: JetWing.cs プロジェクト: wertyu756/Buffalo
        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.Fields["rcsEnabled"].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";
        }
コード例 #34
0
        public void Start()
        {
            heatModule = ModuleUtils.FindHeatModule(this.part, systemHeatModuleID);

            if (engineModuleID != "")
            {
                engineModule = this.GetComponents <ModuleEngines>().ToList().Find(x => x.engineID == engineModuleID);
            }

            if (engineModule == null)
            {
                engineModule = this.GetComponent <ModuleEngines>();
            }

            multiModule = this.GetComponent <MultiModeEngine>();

            Utils.Log("[ModuleSystemHeatEngine] Setup completed", LogType.Modules);
        }
コード例 #35
0
        public void Start()
        {
            animationStates = SetUpAnimation(animationName, this.part);

            if(HighLogic.LoadedSceneIsFlight)
            {
                engines = this.GetComponents<ModuleEngines>().ToList();
                engineIsOn = QueryEngineOn() || (isOneShot && deployed);

                multiController = this.GetComponent<MultiModeEngine>();
                if (multiController != null)
                    hasMultiEngine = true;
            }

            foreach(AnimationState anim in animationStates)
            {
                if (engineIsOn)
                {
                        anim.normalizedTime = 1f;
                }
                else
                {
                        anim.normalizedTime = 0f;
                }
            }
        }
コード例 #36
0
        public override void OnStart(PartModule.StartState state)
        {
            base.OnStart(state);
            if (HighLogic.LoadedSceneIsFlight)
            {
                multiModeEngine = this.part.FindModuleImplementing<MultiModeEngine>();
                if (multiModeEngine == null)
                {
                    currentEngine = this.part.FindModuleImplementing<ModuleEngines>();
                }

                else //Find the primary and secondary engines
                {
                    List<ModuleEngines> engineList = this.part.FindModulesImplementing<ModuleEngines>();
                    foreach (ModuleEngines engine in engineList)
                    {
                        if (engine.engineID == multiModeEngine.primaryEngineID)
                            primaryEngine = engine;
                        else if (engine.engineID == multiModeEngine.secondaryEngineID)
                            secondaryEngine = engine;
                    }

                    //Now set the current engine
                    SetCurrentEngine();
                }

                //Set min/max thrust
                SetMinMaxThrust();

                //Set hover state
                if (hoverActive)
                    ActivateHover();
                else
                    DeactivateHover();

                //Set gui visible state
                SetGUIVisible(guiVisible);

                //Get the transforms for the turbine blades
                getTurbineTransforms();

                //Setup the intake for the current engine mode.
                SetupIntake();
            }
        }
コード例 #37
0
        // Finds multiengine and ModuleEnginesFX
        private void LoadEngineModules()
        {
            engines = new List<ModuleEnginesFX>();
            PartModuleList modules = part.Modules;

            foreach (PartModule mod in part.Modules)
            {
                if (mod.moduleName == "ModuleEnginesFX")
                {
                    engines.Add((ModuleEnginesFX)mod);
                    //Utils.Log("VariableIspEngine: " +  ((ModuleEnginesFX)mod).runningEffectName);
                }
                if (mod.moduleName == "MultiModeEngine")
                    multiEngine = mod.GetComponent<MultiModeEngine>();
            }
        }
コード例 #38
0
ファイル: JetWing.cs プロジェクト: Kerbas-ad-astra/Buffalo
        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";
        }
コード例 #39
0
 public void Start()
 {
     engineSwitch = part.GetComponent<MultiModeEngine>();
 }