public void DumpPartToBuffer(StringBuilder buffer, String prefix, List <PartSim> allParts = null) { buffer.Append(prefix); buffer.Append(name); buffer.AppendFormat(":[id = {0:d}, decouple = {1:d}, invstage = {2:d}", partId, decoupledInStage, inverseStage); buffer.AppendFormat(", vesselName = '{0}'", vesselName); buffer.AppendFormat(", vesselType = {0}", SimManager.GetVesselTypeString(vesselType)); buffer.AppendFormat(", initialVesselName = '{0}'", initialVesselName); buffer.AppendFormat(", fuelCF = {0}", fuelCrossFeed); buffer.AppendFormat(", noCFNKey = '{0}'", noCrossFeedNodeKey); buffer.AppendFormat(", isSep = {0}", isSepratron); foreach (int type in resources.Types) { buffer.AppendFormat(", {0} = {1:g6}", ResourceContainer.GetResourceName(type), resources[type]); } if (attachNodes.Count > 0) { buffer.Append(", attached = <"); attachNodes[0].DumpToBuffer(buffer); for (int i = 1; i < attachNodes.Count; i++) { buffer.Append(", "); attachNodes[i].DumpToBuffer(buffer); } buffer.Append(">"); } // Add more info here buffer.Append("]\n"); if (allParts != null) { String newPrefix = prefix + " "; foreach (PartSim partSim in allParts) { if (partSim.parent == this) { partSim.DumpPartToBuffer(buffer, newPrefix, allParts); } } } }
public void CreateEngineSims(List <EngineSim> allEngines, double atmosphere, double velocity, bool vectoredThrust, LogMsg log) { bool correctThrust = SimManager.DoesEngineUseCorrectedThrust(part); if (log != null) { log.buf.AppendLine("CreateEngineSims for " + name); foreach (PartModule partMod in part.Modules) { log.buf.AppendLine("Module: " + partMod.moduleName); } log.buf.AppendLine("correctThrust = " + correctThrust); } if (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 = part.GetModule <MultiModeEngine>().mode; foreach (ModuleEnginesFX engine in part.GetModules <ModuleEnginesFX>()) { if (engine.engineID == mode) { if (log != null) { log.buf.AppendLine("Module: " + engine.moduleName); } Vector3 thrustvec = CalculateThrustVector(vectoredThrust ? engine.thrustTransforms : null, log); EngineSim engineSim = new EngineSim(this, atmosphere, velocity, engine.maxThrust, engine.minThrust, engine.thrustPercentage, engine.requestedThrust, thrustvec, engine.realIsp, engine.atmosphereCurve, engine.useVelocityCurve ? engine.velocityCurve : null, engine.throttleLocked, engine.propellants, engine.isOperational, correctThrust); allEngines.Add(engineSim); } } } else { if (hasModuleEnginesFX) { foreach (ModuleEnginesFX engine in part.GetModules <ModuleEnginesFX>()) { if (log != null) { log.buf.AppendLine("Module: " + engine.moduleName); } Vector3 thrustvec = CalculateThrustVector(vectoredThrust ? engine.thrustTransforms : null, log); EngineSim engineSim = new EngineSim(this, atmosphere, velocity, engine.maxThrust, engine.minThrust, engine.thrustPercentage, engine.requestedThrust, thrustvec, engine.realIsp, engine.atmosphereCurve, engine.useVelocityCurve ? engine.velocityCurve : null, engine.throttleLocked, engine.propellants, engine.isOperational, correctThrust); allEngines.Add(engineSim); } } if (hasModuleEngines) { foreach (ModuleEngines engine in part.GetModules <ModuleEngines>()) { if (log != null) { log.buf.AppendLine("Module: " + engine.moduleName); } Vector3 thrustvec = CalculateThrustVector(vectoredThrust ? engine.thrustTransforms : null, log); EngineSim engineSim = new EngineSim(this, atmosphere, velocity, engine.maxThrust, engine.minThrust, engine.thrustPercentage, engine.requestedThrust, thrustvec, engine.realIsp, engine.atmosphereCurve, engine.useVelocityCurve ? engine.velocityCurve : null, engine.throttleLocked, engine.propellants, engine.isOperational, correctThrust); allEngines.Add(engineSim); } } } if (log != null) { log.Flush(); } }
public void Dump() { StringBuilder buffer = new StringBuilder(1024); buffer.AppendFormat("Part count = {0:d}\n", allParts.Count); // Output a nice tree view of the rocket if (allParts.Count > 0) { PartSim root = allParts[0]; while (root.parent != null) { root = root.parent; } if (root.hasVessel) { buffer.AppendFormat("vesselName = '{0}' vesselType = {1}\n", vesselName, SimManager.GetVesselTypeString(vesselType)); } root.DumpPartToBuffer(buffer, "", allParts); } MonoBehaviour.print(buffer); }