DayZ 1.29
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ WarmAndCoolItemsInVicinity()

override void UniversalTemperatureSourceLambdaBaseImpl::WarmAndCoolItemsInVicinity ( UniversalTemperatureSourceSettings pSettings,
vector position,
out notnull array< EntityAI > nearestObjects )
inlineprivate

dist factor minimum should be at 0

См. определение в файле UniversalTemperatureSourceLambdaBaseImpl.c строка 49

50 {
51 float distanceToTemperatureSource;
52 float tempTarget = pSettings.m_TemperatureItemCap;
53 EntityAI nearestEntity;
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
64 float time = m_ExecuteInterval;
65 if (m_ExecuteInterval == -1) //bogus time in the first execute
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
75 TemperatureDataInterpolated dta = new TemperatureDataInterpolated(tempTarget,ETemperatureAccessTypes.ACCESS_UTS,time,pSettings.m_TemperatureItemCoef * distFactor);
76
77 if (nearestEntity.GetInventory())
78 {
79 UpdateVicinityTemperatureRecursive(nearestEntity,dta);
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()) //ignoring insignificant increments
86 nearestEntity.SetTemperatureEx(dta);
87 else
88 nearestEntity.RefreshTemperatureAccess(dta);
89 }
90 }
91 }
92 }
class LogManager EntityAI
ETemperatureAccessTypes
Определения TemperatureAccessConstants.c:2
void UpdateVicinityTemperatureRecursive(EntityAI ent, TemperatureData dta, float heatPermeabilityCoef=1.0)
float m_RangeFull
temperature cap that will limit the return value from GetTemperature method
Определения UniversalTemperatureSource.c:7
float m_TemperatureItemCoef
max temperature 'non-IsSelfAdjustingTemperature' entity in vicinity will get per update (cap);
Определения UniversalTemperatureSource.c:5
float m_RangeMax
range where the full temperature is given to receiver
Определения UniversalTemperatureSource.c:8
float m_TemperatureItemCap
how often the Update is ticking
Определения UniversalTemperatureSource.c:4
class LOD Object

Перекрестные ссылки Math::AbsFloat(), Class::CastTo(), vector::Distance(), Math::InverseLerp(), UniversalTemperatureSourceLambdaBase::m_ExecuteInterval, UniversalTemperatureSourceSettings::m_Parent, UniversalTemperatureSourceSettings::m_RangeFull, UniversalTemperatureSourceSettings::m_RangeMax, UniversalTemperatureSourceSettings::m_TemperatureItemCap, UniversalTemperatureSourceSettings::m_TemperatureItemCoef, Math::Max(), GameConstants::TEMPERATURE_SENSITIVITY_THRESHOLD и UpdateVicinityTemperatureRecursive().

Используется в Execute().