47 {
48 float distanceToTemperatureSource;
51
52 foreach (
Object nearestObject : nearestObjects)
53 {
54 if (Class.CastTo(nearestEntity,nearestObject) && nearestEntity != pSettings.
m_Parent && !nearestEntity.IsSelfAdjustingTemperature())
55 {
56 float temperatureDifference = tempTarget - nearestEntity.GetTemperature();
57
58 distanceToTemperatureSource = vector.Distance(nearestEntity.GetPosition(), position);
59 distanceToTemperatureSource = Math.Max(distanceToTemperatureSource, 0.1);
60
63 time = 1;
64
65 float distFactor = 1;
66 if (vector.Distance(nearestEntity.GetPosition(), position) > pSettings.
m_RangeFull)
67 {
68 distFactor = Math.InverseLerp(pSettings.
m_RangeMax,pSettings.
m_RangeFull,distanceToTemperatureSource);
69 distFactor = Math.Max(distFactor, 0.0);
70 }
71
73
74 if (nearestEntity.GetInventory())
75 {
77 }
78 else if (nearestEntity.CanHaveTemperature() && !nearestEntity.IsSelfAdjustingTemperature())
79 {
80 dta.m_HeatPermeabilityCoef = nearestEntity.GetHeatPermeabilityCoef();
81
82 if (Math.AbsFloat(temperatureDifference) >= GameConstants.TEMPERATURE_SENSITIVITY_THRESHOLD || !nearestEntity.IsFreezeThawProgressFinished())
83 nearestEntity.SetTemperatureEx(dta);
84 else
85 nearestEntity.RefreshTemperatureAccess(dta);
86 }
87 }
88 }
89 }
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