示例#1
0
        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!");
            }
        }
示例#2
0
 protected void ProcessUpdateRadiation(ModularFlightIntegrator fi, ModularFlightIntegrator.PartThermalData ptd)
 {
 }