public IEnumerator UpdateSkinThermals() { yield return new WaitForFixedUpdate(); ptd = FI.PartThermalDataList.Where(p => p.part == part).FirstOrDefault(); if ((object)ptd != null) { float newExp, newRad, newTot; CalculateAreas(out newRad, out newExp, out newTot); part.exposedArea = newExp / newRad * part.radiativeArea; if (double.IsNaN(part.exposedArea)) part.exposedArea = 0d; thermalMassMult = newRad / newTot; if (double.IsNaN(thermalMassMult)) thermalMassMult = 1.0d; convectionArea = part.radiativeArea; //print(part.name + " PartThermalData HashCode = " + ptd.GetHashCode()); if(PhysicsGlobals.ThermalConvectionEnabled && !part.ShieldedFromAirstream) UpdateConvection(); if(PhysicsGlobals.ThermalRadiationEnabled && !part.ShieldedFromAirstream) UpdateRadiation(); if(PhysicsGlobals.ThermalConductionEnabled) UpdateSkinConduction(); if (skinTemperature > skinMaxTemp) { //print(part.name + ".skinTemperature = " + skinTemperature.ToString()); //print(part.name + ".skinMaxTemp = " + skinMaxTemp.ToString()); FlightLogger.eventLog.Add("[" + FormatTime(vessel.missionTime) + "] " + part.partInfo.title + " burned up from overheating."); if ( part is StrutConnector ) { ((StrutConnector)part).BreakJoint(); } if (!CheatOptions.IgnoreMaxTemperature) part.explode(); } CheckForFire(); CheckGeeForces(); if (PhysicsGlobals.ThermalDataDisplay) { skinTemperatureDisplay = skinTemperature.ToString ("F2"); skinThermalMassDisplay = skinThermalMass.ToString("F2"); RadiativeAreaDisplay = part.radiativeArea.ToString ("F2"); ExposedAreaDisplay = part.exposedArea.ToString("F2"); convFluxAreaDisplay = (part.thermalConvectionFlux / part.exposedArea).ToString("F4"); } } else { //print(part.name + ": PartThermalData is NULL!"); } }
protected void ProcessUpdateRadiation(ModularFlightIntegrator fi, ModularFlightIntegrator.PartThermalData ptd) { }