public override void OnStart(StartState state) { if (state == StartState.Editor) { return; } if (vessel == null) { return; } engine = new EngineWrapper(part); engine.IspMultiplier = IspMultiplier; engine.idle = idle; engine.useVelocityCurve = false; engine.ThrustUpperLimit = maxThrust; float omega = rpm * 0.1047f; // power *= 745.7f; aje = new AJERotorSolver(omega, r, weight, power * 745.7f, 1.2f, VTOLbuff); sas = (ModuleReactionWheel)part.Modules["ModuleReactionWheel"]; sasP = sas.PitchTorque; sasY = sas.YawTorque; sasR = sas.RollTorque; }
public override void OnStart(StartState state) { if (state == StartState.Editor) return; if (vessel == null) return; engine = new EngineWrapper(part); engine.IspMultiplier = IspMultiplier; engine.idle = idle; engine.useVelocityCurve = false; engine.ThrustUpperLimit = maxThrust; float omega = rpm * 0.1047f; // power *= 745.7f; aje = new AJERotorSolver(omega, r, weight, power * 745.7f, 1.2f, VTOLbuff); sas = (ModuleReactionWheel)part.Modules["ModuleReactionWheel"]; sasP = sas.PitchTorque; sasY = sas.YawTorque; sasR = sas.RollTorque; }
public override void OnStart(StartState state) { if (state == StartState.Editor) { Need_Area = acore * (1 + byprat); return; } if (vessel == null) return; engine = new EngineWrapper(part); engine.useVelocityCurve = false; engine.IspMultiplier = IspMultiplier; engine.idle = idle; engine.ThrustUpperLimit = maxThrust; part.maxTemp = 1800f; if(tt4 >0) part.maxTemp = (tt4-32f) * (1f/1.8f); engine.heatProduction = part.maxTemp * 0.1f; aje = new AJESolver(); aje.setDefaults(); switch (defaultentype) { case 1: aje.loadJ85(); break; case 2: aje.loadF100(); break; case 3: aje.loadCF6(); break; case 4: aje.loadRamj(); break; } if (true) { if (acore != -1 && byprat != -1) { aje.areaCore = acore; aje.byprat = byprat; aje.areaFan = acore * (1.0 + byprat); aje.a2d = aje.a2 = aje.areaFan; } if (tt4 != -1) aje.tt[4] = aje.tt4 = aje.tt4d = tt4; if (prat3 != -1) aje.prat[3] = aje.p3p2d = prat3; if (prat13 != -1) aje.prat[13] = aje.p3fp2d = prat13; if (tcomp != -1) aje.tcomp = tcomp; if (fhv != -1) aje.fhvd = aje.fhv = fhv; if (tt7 != -1) aje.tt[7] = aje.tt7 = aje.tt7d = tt7; if (eta2 != -1) aje.eta[2] = eta2; if (prat2 != -1) aje.prat[2] = prat2; if (prat4 != -1) aje.prat[4] = prat4; if (eta3 != -1) aje.eta[3] = eta3; if (eta4 != -1) aje.eta[4] = eta4; if (eta5 != -1) aje.eta[5] = eta5; if (eta7 != -1) aje.eta[7] = eta7; if (eta13 != -1) aje.eta[13] = eta13; if (tinlt != -1) aje.tinlt = tinlt; if (tfan != -1) aje.tfan = tfan; if (tcomp != -1) aje.tcomp = tcomp; if (abflag != -1) aje.abflag = abflag; } if (aje.abflag == 1 && (!isReactionEngine)) { useAB = true; ABmax = (float)aje.tt7; ABmin = (float)(aje.tt4); } if (part.partInfo.partPrefab.Modules.Contains("AJEModule")) { AJEModule a = (AJEModule)part.partInfo.partPrefab.Modules["AJEModule"]; usePrat3Curve = a.usePrat3Curve; prat3Curve = a.prat3Curve; } if (usePrat3Curve) { print("AJE OnStart for part " + part.name + " found prat3Curve"); float min, max; prat3Curve.FindMinMaxValue(out min, out max); print("curve: " + prat3Curve.minTime + ": " + min + "; " + prat3Curve.maxTime + ": " + max); aje.fsmach = 0.0; aje.prat[3] = aje.p3p2d = prat3Curve.Evaluate(0.0f); } engine.engineDecelerationSpeed = 1 / (float)(aje.areaCore * (1 + aje.byprat)); engine.engineAccelerationSpeed = 1 / (float)(aje.areaCore * (1 + aje.byprat)); }
public override void OnStart(StartState state) { if (state == StartState.Editor) return; if (vessel == null) return; engine = new EngineWrapper(part); engine.IspMultiplier = IspMultiplier; engine.idle = idle; engine.useVelocityCurve = false; engine.ThrustUpperLimit = maxThrust; engine.useEngineResponseTime = false; part.maxTemp = 200f; engine.heatProduction = 10f; //v0 *= 0.5144f; //omega0 *= 0.1047f; //power0 *= 745.7f; //omega *= 0.1047f; //power *= 745.7f; //propeller = new AJEPropellerSolver(r0, v0 * 0.5144f, omega0 * PistonEngine.RPM2RADPS, rho0, power0 * PistonEngine.HP2W); pistonengine = new PistonEngine(power * PistonEngine.HP2W, maxRPM * PistonEngine.RPM2RADPS, BSFC); pistonengine._hasSuper = boost0 > 0; pistonengine.setBoostParams(wastegateMP * INHG2PA, boost0 * INHG2PA, boost1 * INHG2PA, rated0, rated1, cost1 * PistonEngine.HP2W, switchAlt, turbo); if (displacement > 0) pistonengine._displacement = displacement * PistonEngine.CIN2CM; pistonengine._compression = compression; pistonengine._coolerEffic = coolerEffic; pistonengine._coolerMin = coolerMin + CTOK; pistonengine._ramAir = ramAir; propJSB = new AJEPropJSB(propName, minRPM * gearratio, maxRPM * gearratio, propDiam, propIxx); if(propJSB.GetConstantSpeed() == 0) Fields["propPitch"].guiActive = false; if (exhaustThrust <= 0f) Fields["netExhaustThrust"].guiActive = false; if (meredithEffect <= 0f) Fields["netMeredithEffect"].guiActive = false; pistonengine.ComputeVEMultiplier(); // given newly-set stats omega = 30; // start slow }
public override void OnStart(StartState state) { if (state == StartState.Editor) { Need_Area = acore * (1 + byprat); return; } if (vessel == null) { return; } engine = new EngineWrapper(part); engine.useVelocityCurve = false; engine.IspMultiplier = IspMultiplier; engine.idle = idle; engine.ThrustUpperLimit = maxThrust; part.maxTemp = 1800f; if (tt4 > 0) { part.maxTemp = (tt4 - 32f) * (1f / 1.8f); } engine.heatProduction = part.maxTemp * 0.1f; aje = new AJESolver(); aje.setDefaults(); switch (defaultentype) { case 1: aje.loadJ85(); break; case 2: aje.loadF100(); break; case 3: aje.loadCF6(); break; case 4: aje.loadRamj(); break; } if (true) { if (acore != -1 && byprat != -1) { aje.areaCore = acore; aje.byprat = byprat; aje.areaFan = acore * (1.0 + byprat); aje.a2d = aje.a2 = aje.areaFan; } if (tt4 != -1) { aje.tt[4] = aje.tt4 = aje.tt4d = tt4; } if (prat3 != -1) { aje.prat[3] = aje.p3p2d = prat3; } if (prat13 != -1) { aje.prat[13] = aje.p3fp2d = prat13; } if (tcomp != -1) { aje.tcomp = tcomp; } if (fhv != -1) { aje.fhvd = aje.fhv = fhv; } if (tt7 != -1) { aje.tt[7] = aje.tt7 = aje.tt7d = tt7; } if (eta2 != -1) { aje.eta[2] = eta2; } if (prat2 != -1) { aje.prat[2] = prat2; } if (prat4 != -1) { aje.prat[4] = prat4; } if (eta3 != -1) { aje.eta[3] = eta3; } if (eta4 != -1) { aje.eta[4] = eta4; } if (eta5 != -1) { aje.eta[5] = eta5; } if (eta7 != -1) { aje.eta[7] = eta7; } if (eta13 != -1) { aje.eta[13] = eta13; } if (tinlt != -1) { aje.tinlt = tinlt; } if (tfan != -1) { aje.tfan = tfan; } if (tcomp != -1) { aje.tcomp = tcomp; } if (abflag != -1) { aje.abflag = abflag; } } if (aje.abflag == 1 && (!isReactionEngine)) { useAB = true; ABmax = (float)aje.tt7; ABmin = (float)(aje.tt4); } if (part.partInfo.partPrefab.Modules.Contains("AJEModule")) { AJEModule a = (AJEModule)part.partInfo.partPrefab.Modules["AJEModule"]; usePrat3Curve = a.usePrat3Curve; prat3Curve = a.prat3Curve; } if (usePrat3Curve) { print("AJE OnStart for part " + part.name + " found prat3Curve"); float min, max; prat3Curve.FindMinMaxValue(out min, out max); print("curve: " + prat3Curve.minTime + ": " + min + "; " + prat3Curve.maxTime + ": " + max); aje.fsmach = 0.0; aje.prat[3] = aje.p3p2d = prat3Curve.Evaluate(0.0f); } engine.engineDecelerationSpeed = 1 / (float)(aje.areaCore * (1 + aje.byprat)); engine.engineAccelerationSpeed = 1 / (float)(aje.areaCore * (1 + aje.byprat)); }