ChangeRadiatorTransfer() public method

public ChangeRadiatorTransfer ( float scale ) : void
scale float
return void
        public void FixedUpdate()
        {
            if (HighLogic.LoadedScene == GameScenes.FLIGHT)
            {
                if (reactor != null)
                {
                    float maxFlowScalar = 0f;
                    for (int i = 0; i < engineData.Count; i++)
                    {
                        // If the engine is off, it will have the maximum Isp available
                        if (!engineData[i].engineFX.isActiveAndEnabled || (engineData[i].engineFX.isActiveAndEnabled && engineData[i].engineFX.throttleSetting <= 0f))
                        {
                            engineData[i].engineFX.atmosphereCurve = engineData[i].ispCurve;
                            maxFlowScalar = Mathf.Max(maxFlowScalar, 0.0f);
                        }
                        else
                        {
                            float CoreTemperatureRatio = TempIspScale.Evaluate((float)core.CoreTemperature);
                            float reactorRatio         = reactor.ActualPowerPercent / 100f * reactor.CoreIntegrity / 100f;
                            if (!reactor.ModuleIsActive())
                            {
                                reactorRatio = 0f;
                            }

                            float ispRatio = CoreTemperatureRatio * reactorRatio;

                            engineData[i].engineFX.atmosphereCurve = new FloatCurve();
                            engineData[i].engineFX.atmosphereCurve.Add(0f, engineData[i].ispCurve.Evaluate(0f) * ispRatio);
                            engineData[i].engineFX.atmosphereCurve.Add(1f, engineData[i].ispCurve.Evaluate(1f) * ispRatio);
                            engineData[i].engineFX.atmosphereCurve.Add(4f, engineData[i].ispCurve.Evaluate(4f) * ispRatio);

                            //Utils.Log(String.Format("{0} ui {1} max {2} reqested", engineData[i].engineFX.fuelFlowGui, engineData[i].engineFX.maxFuelFlow, engineData[i].engineFX.requestedMassFlow));
                            //Utils.Log(String.Format("{0} t_setting {1} normTr {2} normout", engineData[i].engineFX.throttleSetting, engineData[i].engineFX.normalizedThrustOutput, engineData[i].engineFX.normalizedOutput));
                            maxFlowScalar = Mathf.Max(maxFlowScalar, (engineData[i].engineFX.throttleSetting));
                        }
                    }
                    float heat = reactor.ActualPowerPercent / 100f * reactor.HeatGeneration / 50f * reactor.CoreIntegrity / 100f;
                    //flowRadiator.ChangeRadiatorTransfer(Mathf.Max(base.CurrentHeatUsed, heat) * maxFlowScalar);

                    float exhaustCooling = flowRadiator.ChangeRadiatorTransfer(maxFlowScalar);
                    core.MaxCoolant = Mathf.Clamp(heat - exhaustCooling, 0.0f, heat);
                }
            }
        }
示例#2
0
        public void FixedUpdate()
        {
            if (HighLogic.LoadedScene == GameScenes.FLIGHT)
            {
                if (reactor != null)
                {
                    float maxFlowScalar = 0f;
                    foreach (EngineBaseData eData in engineData)
                    {
                        // If the engine is off, it will have the maximum Isp available
                        if (!eData.engineFX.isActiveAndEnabled || (eData.engineFX.isActiveAndEnabled && eData.engineFX.throttleSetting <= 0f))
                        {
                            eData.engineFX.atmosphereCurve = eData.ispCurve;
                            maxFlowScalar = Mathf.Max(maxFlowScalar, 0.0f);
                        }
                        else
                        {
                            float CoreTemperatureRatio = TempIspScale.Evaluate((float)core.CoreTemperature);
                            float reactorRatio         = reactor.CurrentPowerPercent / 100f;
                            if (!reactor.ModuleIsActive())
                            {
                                reactorRatio = 0f;
                            }

                            float ispRatio = CoreTemperatureRatio * reactorRatio;

                            eData.engineFX.atmosphereCurve = new FloatCurve();
                            eData.engineFX.atmosphereCurve.Add(0f, eData.ispCurve.Evaluate(0f) * ispRatio);
                            eData.engineFX.atmosphereCurve.Add(1f, eData.ispCurve.Evaluate(1f) * ispRatio);
                            eData.engineFX.atmosphereCurve.Add(4f, eData.ispCurve.Evaluate(4f) * ispRatio);

                            //Utils.Log(String.Format("{0} ui {1} max {2} reqested",eData.engineFX.fuelFlowGui,eData.engineFX.maxFuelFlow,eData.engineFX.requestedMassFlow));
                            maxFlowScalar = Mathf.Max(maxFlowScalar, (eData.engineFX.requestedMassFlow / eData.engineFX.maxFuelFlow));
                        }
                    }
                    float heat = reactor.CurrentPowerPercent / 100f * reactor.HeatGeneration / 50f * reactor.CoreIntegrity / 100f;
                    flowRadiator.ChangeRadiatorTransfer(Mathf.Max(base.CurrentHeatUsed, heat) * maxFlowScalar);
                }
            }
        }