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

◆ WarmAndCoolItemsInVicinity()

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

dist factor minimum should be at 0

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

47 {
48 float distanceToTemperatureSource;
49 float tempTarget = pSettings.m_TemperatureItemCap;
50 EntityAI nearestEntity;
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
61 float time = m_ExecuteInterval;
62 if (m_ExecuteInterval == -1) //bogus time in the first execute
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
72 TemperatureDataInterpolated dta = new TemperatureDataInterpolated(tempTarget,ETemperatureAccessTypes.ACCESS_UTS,time,pSettings.m_TemperatureItemCoef * distFactor);
73
74 if (nearestEntity.GetInventory())
75 {
76 UpdateVicinityTemperatureRecursive(nearestEntity,dta);
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()) //ignoring insignificant increments
83 nearestEntity.SetTemperatureEx(dta);
84 else
85 nearestEntity.RefreshTemperatureAccess(dta);
86 }
87 }
88 }
89 }
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().