public void updateIspEngineParams() { // recaculate ISP based on power and core temp available FloatCurve newISP = new FloatCurve(); FloatCurve vCurve = new FloatCurve(); maxISP = (float)(Math.Sqrt((double)myAttachedReactor.getCoreTemp()) * isp_temp_rat * ispMultiplier); if (!currentpropellant_is_jet) { minISP = maxISP * 0.4f; newISP.Add(0, maxISP, 0, 0); newISP.Add(1, minISP, 0, 0); myAttachedEngine.useVelocityCurve = false; myAttachedEngine.useEngineResponseTime = false; } else { if (myAttachedReactor.shouldScaleDownJetISP()) { maxISP = maxISP * 2.0f / 3.0f; if (maxISP > 300) { maxISP = maxISP / 2.5f; } } newISP.Add(0, maxISP * 4.5f / 5.0f); newISP.Add(0.10f, maxISP); newISP.Add(0.3f, maxISP * 4.0f / 5.0f); newISP.Add(1, maxISP * 2.0f / 3.0f); vCurve.Add(0, 1.0f); vCurve.Add((float)(maxISP * g0 * 1.0 / 3.0), 1.0f); vCurve.Add((float)(maxISP * g0), 1.0f); vCurve.Add((float)(maxISP * g0 * 4.0 / 3.0), 0); myAttachedEngine.useVelocityCurve = true; myAttachedEngine.useEngineResponseTime = true; myAttachedEngine.ignitionThreshold = 0.01f; } myAttachedEngine.atmosphereCurve = newISP; myAttachedEngine.velocityCurve = vCurve; assThermalPower = myAttachedReactor.getThermalPower(); if (myAttachedReactor is FNFusionReactor) { assThermalPower = assThermalPower * 0.95f; } }