50 {
51 float distanceToTemperatureSource;
54
55 foreach (
Object nearestObject : nearestObjects)
56 {
57 if (Class.CastTo(nearestEntity,nearestObject) && nearestEntity != pSettings.
m_Parent && !nearestEntity.IsSelfAdjustingTemperature())
58 {
59 float temperatureDifference = tempTarget - nearestEntity.GetTemperature();
60
61 distanceToTemperatureSource = vector.Distance(nearestEntity.GetPosition(), position);
62 distanceToTemperatureSource = Math.Max(distanceToTemperatureSource, 0.1);
63
66 time = 1;
67
68 float distFactor = 1;
69 if (vector.Distance(nearestEntity.GetPosition(), position) > pSettings.
m_RangeFull)
70 {
71 distFactor = Math.InverseLerp(pSettings.
m_RangeMax,pSettings.
m_RangeFull,distanceToTemperatureSource);
72 distFactor = Math.Max(distFactor, 0.0);
73 }
74
76
77 if (nearestEntity.GetInventory())
78 {
80 }
81 else if (nearestEntity.CanHaveTemperature() && !nearestEntity.IsSelfAdjustingTemperature())
82 {
83 dta.m_HeatPermeabilityCoef = nearestEntity.GetHeatPermeabilityCoef();
84
85 if (Math.AbsFloat(temperatureDifference) >= GameConstants.TEMPERATURE_SENSITIVITY_THRESHOLD || !nearestEntity.IsFreezeThawProgressFinished())
86 nearestEntity.SetTemperatureEx(dta);
87 else
88 nearestEntity.RefreshTemperatureAccess(dta);
89 }
90 }
91 }
92 }
void UpdateVicinityTemperatureRecursive(EntityAI ent, TemperatureData dta, float heatPermeabilityCoef=1.0)
float m_RangeFull
temperature cap that will limit the return value from GetTemperature method
float m_TemperatureItemCoef
max temperature 'non-IsSelfAdjustingTemperature' entity in vicinity will get per update (cap);
float m_RangeMax
range where the full temperature is given to receiver
float m_TemperatureItemCap
how often the Update is ticking