コード例 #1
0
        protected void ChangeEngineThrust(EngineBaseData engine, float frac)
        {
            //Utils.Log($"{engine.engineModule.engineID}, {engine.engineModule.realIsp}, {PhysicsGlobals.GravitationalAcceleration}");
            double fuelRate = ((engine.maxThrust * frac) / (engine.engineModule.atmosphereCurve.Evaluate(0f) * PhysicsGlobals.GravitationalAcceleration));

            engine.engineModule.maxFuelFlow = (float)fuelRate;
        }
コード例 #2
0
 /// <summary>
 /// Handles updating the engine based on its temperature
 /// </summary>
 /// <param name="engine"></param>
 protected void HandleEngine(EngineBaseData engine)
 {
     if (!engine.engineModule.isActiveAndEnabled || (engine.engineModule.isActiveAndEnabled && engine.engineModule.throttleSetting <= 0f))
     {
         ChangeEngineThrust(engine, 1f);
         engine.engineModule.maxThrust = engine.maxThrust;
     }
     else
     {
         ChangeEngineThrust(engine, CurrentThrottle / 100f);
         engine.engineModule.maxThrust = CurrentThrottle / 100f * engine.maxThrust;
     }
     //Utils.Log($"{engine.engineModule.engineID}, {engine.engineModule.maxThrust}, {CurrentThrottle}");
 }
コード例 #3
0
        protected void HandleEngine(EngineBaseData engine)
        {
            if (!engine.engineModule.isActiveAndEnabled || (engine.engineModule.isActiveAndEnabled && engine.engineModule.throttleSetting <= 0f))
            {
                engine.engineModule.atmosphereCurve = engine.ispCurve;
            }
            else
            {
                float ispScale = 0f;
                if (Enabled)
                {
                    ispScale = ispCurve.Evaluate(CurrentThrottle) * CoreIntegrity / 100f;
                }

                engine.engineModule.atmosphereCurve = new FloatCurve();
                engine.engineModule.atmosphereCurve.Add(0f, engine.ispCurve.Evaluate(0f) * ispScale);
                engine.engineModule.atmosphereCurve.Add(1f, engine.ispCurve.Evaluate(1f) * ispScale);
                engine.engineModule.atmosphereCurve.Add(4f, engine.ispCurve.Evaluate(4f) * ispScale);
                engine.engineModule.atmosphereCurve.Add(12f, engine.ispCurve.Evaluate(12f) * ispScale);
            }
        }
コード例 #4
0
        protected void HandleEngine(EngineBaseData engine)
        {
            if (!engine.engineModule.isActiveAndEnabled || (engine.engineModule.isActiveAndEnabled && engine.engineModule.throttleSetting <= 0f))
            {
                engine.engineModule.atmosphereCurve = engine.ispCurve;
            }
            else
            {
                float ispScale = 0f;
                if (Enabled)
                {
                    //Utils.Log($"{(CurrentReactorThrottle/100f * HeatGeneration)}, {((GetEngineFuelFlow() * HeatGeneration) * engineCoolingScale)}");
                    // ispScale = ispCurve.Evaluate((CurrentReactorThrottle / 100f * HeatGeneration) / ((GetEngineFuelFlow() * HeatGeneration) * engineCoolingScale) * 100f) * CoreIntegrity / 100f;
                }

                engine.engineModule.atmosphereCurve = new FloatCurve();
                engine.engineModule.atmosphereCurve.Add(0f, engine.ispCurve.Evaluate(0f) * ispScale);
                engine.engineModule.atmosphereCurve.Add(1f, engine.ispCurve.Evaluate(1f) * ispScale);
                engine.engineModule.atmosphereCurve.Add(4f, engine.ispCurve.Evaluate(4f) * ispScale);
                engine.engineModule.atmosphereCurve.Add(12f, engine.ispCurve.Evaluate(12f) * ispScale);
            }
        }