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; }
/// <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}"); }
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); } }
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); } }