public static New ( |
||
theEngine | ||
engineMod | ModuleEngines | |
atmosphere | double | |
machNumber | float | |
vectoredThrust | bool | |
fullThrust | bool | |
log | LogMsg | |
return |
public void CreateEngineSims(List <EngineSim> allEngines, double atmosphere, double mach, bool vectoredThrust, bool fullThrust, LogMsg log) { if (log != null) { log.AppendLine("CreateEngineSims for ", this.name); } List <ModuleEngines> cacheModuleEngines = part.FindModulesImplementing <ModuleEngines>(); try { if (cacheModuleEngines.Count > 0) { //find first active engine, assuming that two are never active at the same time foreach (ModuleEngines engine in cacheModuleEngines) { if (engine.isEnabled) { if (log != null) { log.AppendLine("Module: ", engine.moduleName); } EngineSim engineSim = EngineSim.New( this, engine, atmosphere, (float)mach, vectoredThrust, fullThrust, log); allEngines.Add(engineSim); } } } } catch { Debug.Log("[KER] Error Catch in CreateEngineSims"); } }
public void CreateEngineSims(List <EngineSim> allEngines, double atmosphere, double mach, bool vectoredThrust, bool fullThrust, LogMsg log) { if (log != null) { log.AppendLine("CreateEngineSims for ", this.name); } var partMods = this.part.Modules; var numMods = partMods.Count; if (hasMultiModeEngine) { // A multi-mode engine has multiple ModuleEngines but only one is active at any point // The mode of the engine is the engineID of the ModuleEngines that is (are?) active string mode = part.GetModule <MultiModeEngine>().mode; for (int i = 0; i < numMods; i++) { //log.AppendLine("Module: ", partMods[i].moduleName); var engine = partMods[i] as ModuleEngines; if (engine != null && engine.engineID == mode) { if (log != null) { log.AppendLine("Module: ", engine.moduleName); } EngineSim engineSim = EngineSim.New( this, engine, atmosphere, (float)mach, vectoredThrust, fullThrust, log); allEngines.Add(engineSim); } } } else if (hasModuleEngines) { for (int i = 0; i < numMods; i++) { //log.AppendLine("Module: ", partMods[i].moduleName); var engine = partMods[i] as ModuleEngines; if (engine != null) { if (log != null) { log.AppendLine("Module: ", engine.moduleName); } EngineSim engineSim = EngineSim.New( this, engine, atmosphere, (float)mach, vectoredThrust, fullThrust, log); allEngines.Add(engineSim); } } } }
public void CreateEngineSims(List <EngineSim> allEngines, double atmosphere, double mach, bool vectoredThrust, bool fullThrust, LogMsg log) { if (log != null) { log.buf.AppendLine("CreateEngineSims for " + this.name); for (int i = 0; i < this.part.Modules.Count; i++) { PartModule partMod = this.part.Modules[i]; log.buf.AppendLine("Module: " + partMod.moduleName); } } if (hasMultiModeEngine) { // A multi-mode engine has multiple ModuleEngines but only one is active at any point // The mode of the engine is the engineID of the ModuleEngines that is active string mode = part.GetModule <MultiModeEngine>().mode; List <ModuleEngines> engines = part.GetModules <ModuleEngines>(); for (int i = 0; i < engines.Count; ++i) { ModuleEngines engine = engines[i]; if (engine.engineID == mode) { if (log != null) { log.buf.AppendLine("Module: " + engine.moduleName); } EngineSim engineSim = EngineSim.New( this, engine, atmosphere, (float)mach, vectoredThrust, fullThrust, log); allEngines.Add(engineSim); } } } else if (hasModuleEngines) { List <ModuleEngines> engines = part.GetModules <ModuleEngines>(); for (int i = 0; i < engines.Count; ++i) { ModuleEngines engine = engines[i]; if (log != null) { log.buf.AppendLine("Module: " + engine.moduleName); } EngineSim engineSim = EngineSim.New( this, engine, atmosphere, (float)mach, vectoredThrust, fullThrust, log); allEngines.Add(engineSim); } } if (log != null) { log.Flush(); } }
public void CreateEngineSims(List <EngineSim> allEngines, double atmosphere, double mach, bool vectoredThrust, bool fullThrust, LogMsg log) { bool correctThrust = SimManager.DoesEngineUseCorrectedThrust(this.part); if (log != null) { log.buf.AppendLine("CreateEngineSims for " + this.name); for (int i = 0; i < this.part.Modules.Count; i++) { PartModule partMod = this.part.Modules[i]; log.buf.AppendLine("Module: " + partMod.moduleName); } log.buf.AppendLine("correctThrust = " + correctThrust); } if (this.hasMultiModeEngine) { // A multi-mode engine has multiple ModuleEnginesFX but only one is active at any point // The mode of the engine is the engineID of the ModuleEnginesFX that is active string mode = this.part.GetModule <MultiModeEngine>().mode; List <ModuleEnginesFX> enginesFx = this.part.GetModules <ModuleEnginesFX>(); for (int i = 0; i < enginesFx.Count; i++) { ModuleEnginesFX engine = enginesFx[i]; if (engine.engineID == mode) { if (log != null) { log.buf.AppendLine("Module: " + engine.moduleName); } Vector3 thrustvec = this.CalculateThrustVector(vectoredThrust ? engine.thrustTransforms : null, log); EngineSim engineSim = EngineSim.New( this, atmosphere, mach, engine.maxFuelFlow, engine.minFuelFlow, engine.thrustPercentage, thrustvec, engine.atmosphereCurve, engine.atmChangeFlow, engine.useAtmCurve ? engine.atmCurve : null, engine.useVelCurve ? engine.velCurve : null, engine.currentThrottle, engine.g, engine.throttleLocked || fullThrust, engine.propellants, engine.isOperational, correctThrust, engine.thrustTransforms); allEngines.Add(engineSim); } } } else { if (this.hasModuleEngines) { List <ModuleEngines> engines = this.part.GetModules <ModuleEngines>(); // only place that still allocate some memory for (int i = 0; i < engines.Count; i++) { ModuleEngines engine = engines[i]; if (log != null) { log.buf.AppendLine("Module: " + engine.moduleName); } Vector3 thrustvec = this.CalculateThrustVector(vectoredThrust ? engine.thrustTransforms : null, log); EngineSim engineSim = EngineSim.New( this, atmosphere, mach, engine.maxFuelFlow, engine.minFuelFlow, engine.thrustPercentage, thrustvec, engine.atmosphereCurve, engine.atmChangeFlow, engine.useAtmCurve ? engine.atmCurve : null, engine.useVelCurve ? engine.velCurve : null, engine.currentThrottle, engine.g, engine.throttleLocked || fullThrust, engine.propellants, engine.isOperational, correctThrust, engine.thrustTransforms); allEngines.Add(engineSim); } } } if (log != null) { log.Flush(); } }