예제 #1
0
        public override void OnUpdate()
        {
            base.OnUpdate();
            if (vessel == null || PresetsHandler.current == null)
            {
                return;
            }

            SABenabled = PresetsHandler.current.allow_sab;

            if (SABenabled && SABbrakes == vessel.ActionGroups[KSPActionGroup.Brakes])
            {
                SABenabled = false;
            }

            module = part.Modules.GetModules <ModuleAeroSurface>().First();
            float temperature = (float)part.skinTemperature / module.uncasedTemp * 100f;

            if (SABenabled)
            {
                if (temperature >= PresetsHandler.current.sab_highT && SABbrakes != vessel.ActionGroups[KSPActionGroup.Brakes])
                {
                    SABstart = true;
                }
                else if (temperature < PresetsHandler.current.sab_lowT)
                {
                    SABstart = false;
                }
            }

            SAB();
        }
예제 #2
0
        public void FixedUpdate()
        {
            if (HighLogic.LoadedScene != GameScenes.FLIGHT)
            {
                return;
            }

            AeroSurfaceModule = part.FindModuleImplementing <ModuleAeroSurface>();
            if (null == AeroSurfaceModule)
            {
                return;
            }

            if (true == plusEnabled)
            {
                if (false == AeroSurfaceModule.deploy)
                {
                    if (part.vessel.ctrlState.pitch > 0.01 || part.vessel.ctrlState.pitch < -0.01)
                    {
                        if (part.vessel.ctrlState.yaw > 0.01 || part.vessel.ctrlState.yaw < -0.01)
                        {
                            AeroSurfaceModule.deflectionLiftCoeff = deflectionLiftCoeff;
                        }
                    }
                    else
                    {
                        AeroSurfaceModule.deflectionLiftCoeff = 0f;
                    }
                }
                else
                {
                    AeroSurfaceModule.deflectionLiftCoeff = deflectionLiftCoeff;
                }

                if (FlightGlobals.getStaticPressure(part.transform.position) < 0.0001f)
                {
                    if (vacuumRange > 0.01f)
                    {
                        vacuumRange -= 0.05f;
                    }
                    else
                    {
                        vacuumRange = 0.01f;
                    }
                }
                else
                {
                    if (vacuumRange < 1.0f)
                    {
                        vacuumRange += 0.05f;
                    }
                    else
                    {
                        vacuumRange = 1.0f;
                    }
                }
                AeroSurfaceModule.ctrlSurfaceRange = ctrlSurfaceRange * vacuumRange;
            }
        }
        private float vacuumRange = 1.0f; // disables flight controls when in vacuum

        #endregion Fields

        #region Methods

        public void FixedUpdate()
        {
            if (HighLogic.LoadedScene != GameScenes.FLIGHT) { return; }

            AeroSurfaceModule = part.FindModuleImplementing<ModuleAeroSurface>();
            if (null == AeroSurfaceModule) { return; }

            if (true == plusEnabled)
            {
                if (false == AeroSurfaceModule.deploy)
                {
                    if (part.vessel.ctrlState.pitch > 0.01 || part.vessel.ctrlState.pitch < -0.01)
                    {
                        if (part.vessel.ctrlState.yaw > 0.01 || part.vessel.ctrlState.yaw < -0.01)
                        {
                            AeroSurfaceModule.deflectionLiftCoeff = deflectionLiftCoeff;
                        }
                    }
                    else
                    {
                        AeroSurfaceModule.deflectionLiftCoeff = 0f;
                    }
                }
                else
                {
                    AeroSurfaceModule.deflectionLiftCoeff = deflectionLiftCoeff;
                }

                if (FlightGlobals.getStaticPressure(part.transform.position) < 0.0001f)
                {
                    if (vacuumRange > 0.01f)
                    {
                        vacuumRange -= 0.05f;
                    }
                    else
                    {
                        vacuumRange = 0.01f;
                    }
                }
                else
                {
                    if (vacuumRange < 1.0f)
                    {
                        vacuumRange += 0.05f;
                    }
                    else
                    {
                        vacuumRange = 1.0f;
                    }
                }
                AeroSurfaceModule.ctrlSurfaceRange = ctrlSurfaceRange * vacuumRange;
            }
        }
예제 #4
0
        public override void OnStart(StartState state)
        {
            Debug.Log(moduleName + ".Start(): v01.06");

            base.OnStart(state);

            AeroSurfaceModule = part.FindModuleImplementing <ModuleAeroSurface>();
            if (null == AeroSurfaceModule)
            {
                Debug.LogWarning(moduleName + ".Start(): Did not find Aero Surface Module.");
                return;
            }

            SetupStockPlus();
        }
예제 #5
0
        public override void OnUpgrade(ConfigNode node, LoadContext loadContext, ConfigNode parentNode)
        {
            ConfigNode[] nodes = node.GetNodes("MODULE");
            int          num   = nodes.Length;

            while (num-- > 0)
            {
                string value = nodes[num].GetValue("name");
                if (value == "ModuleAeroSurface")
                {
                    ModuleAeroSurface baseModule = GetBaseModule(node, loadContext);
                    ConvertAeroAuthority(nodes[num], baseModule);
                    ConvertAeroAuthorityAxisGroup(nodes[num]);
                }
            }
        }
예제 #6
0
        //============================================================================================================================================
        public void EngageAero()
        {
            //FAR Compatibility =)
            //Skip this if FAR isn't being used
            if (assemblyFARUsed == true) {
                foreach (Part EnabledPart in EnabledPartList) {
                    if (EnabledPart.Modules.Contains ("FARControllableSurface")) {
                        AeroFARModuleReference = EnabledPart.Modules ["FARControllableSurface"];
                        if (AeroFARModuleReference.Fields.GetValue ("isSpoiler").ToString() == "True") {
                            RoboBrakes_AeroEnabledCount++;
                            BaseActionList BAL = new BaseActionList (EnabledPart, AeroFARModuleReference);
                            foreach (BaseAction BA in BAL) {
                                if ((RoboBrakes_AUTOMATICBRAKE_ACTIVE == true && RoboBrakes_AEROAUTO == true) | (RoboBrakes_OVERRIDEBRAKE_ACTIVE == true && RoboBrakes_AEROOVERRIDE == true)) {
                                    if (BA.guiName == "Activate Spoiler") {
                                        KSPActionParam AP = new KSPActionParam (KSPActionGroup.None, KSPActionType.Activate);
                                        BA.Invoke (AP);
                                    }
                                } else {
                                    if (BA.guiName == "Activate Spoiler") {
                                        KSPActionParam AP = new KSPActionParam (KSPActionGroup.None, KSPActionType.Deactivate);
                                        BA.Invoke (AP);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            foreach (Part EnabledPart in EnabledPartList) {
                //---------------------------------------------------------------------------------------------------------------------
                //Control Surface Module
                if (EnabledPart.Modules.Contains ("ModuleControlSurface")) {
                    ModuleControlSurface MCS = new ModuleControlSurface ();
                    MCS = EnabledPart.FindModuleImplementing<ModuleControlSurface> ();
                    RoboBrakes_AeroEnabledCount++;
                    BaseActionList BAL = new BaseActionList (EnabledPart, MCS);
                    foreach (BaseAction BA in BAL) {
                        if ((RoboBrakes_AUTOMATICBRAKE_ACTIVE == true && RoboBrakes_AEROAUTO == true) | (RoboBrakes_OVERRIDEBRAKE_ACTIVE == true && RoboBrakes_AEROOVERRIDE == true)) {
                            if (BA.guiName == "Extend") {
                                KSPActionParam AP = new KSPActionParam (KSPActionGroup.None, KSPActionType.Activate);
                                BA.Invoke (AP);
                            }
                        } else {
                            if (BA.guiName == "Retract") {
                                KSPActionParam AP = new KSPActionParam (KSPActionGroup.None, KSPActionType.Activate);
                                BA.Invoke (AP);
                            }
                        }
                    }
                }

                //---------------------------------------------------------------------------------------------------------------------
                //Module Aero Surface
                if (EnabledPart.Modules.Contains ("ModuleAeroSurface")) {
                    ModuleAeroSurface MAS = new ModuleAeroSurface ();
                    MAS = EnabledPart.FindModuleImplementing<ModuleAeroSurface> ();
                    RoboBrakes_AeroEnabledCount++;
                    BaseActionList BAL = new BaseActionList (EnabledPart, MAS);
                    foreach (BaseAction BA in BAL) {
                        if ((RoboBrakes_AUTOMATICBRAKE_ACTIVE == true && RoboBrakes_AEROAUTO == true) | (RoboBrakes_OVERRIDEBRAKE_ACTIVE == true && RoboBrakes_AEROOVERRIDE == true)) {
                            if (BA.guiName == "Extend") {
                                KSPActionParam AP = new KSPActionParam (KSPActionGroup.None, KSPActionType.Activate);
                                BA.Invoke (AP);
                            }
                        } else {
                            if (BA.guiName == "Retract") {
                                KSPActionParam AP = new KSPActionParam (KSPActionGroup.None, KSPActionType.Activate);
                                BA.Invoke (AP);
                            }
                        }
                    }
                }
            }
        }
        public override void OnStart(StartState state)
        {
            Debug.Log(moduleName + ".Start(): v01.06");

            base.OnStart(state);

            AeroSurfaceModule = part.FindModuleImplementing<ModuleAeroSurface>();
            if (null == AeroSurfaceModule)
            {
                Debug.LogWarning(moduleName + ".Start(): Did not find Aero Surface Module.");
                return;
            }

            SetupStockPlus();
        }