5 float distanceToTemperatureSource;
7 foreach (
Object nearestObject : nearestObjects)
13 if (nearestItem && nearestItem.HasWetness() && nearestItem != pSettings.m_Parent && !nearestItem.IsInherited(Man) && !nearestItem.IsUniversalTemperatureSource())
15 distanceToTemperatureSource =
vector.Distance(nearestItem.GetPosition(), position);
16 distanceToTemperatureSource =
Math.Max(distanceToTemperatureSource, 0.001);
17 distanceToTemperatureSource = 1 / distanceToTemperatureSource;
18 distanceToTemperatureSource =
Math.Clamp(distanceToTemperatureSource, 0.0, 1.0);
24 dryValue = (-1 *
m_ExecuteInterval * nearestItem.GetDryingIncrement(
"groundHeatSource")) * pSettings.m_ItemDryModifier * distanceToTemperatureSource;
25 Math.Clamp(dryValue, nearestItem.GetWetMin(), nearestItem.GetWetMax());
26 nearestItem.AddWet(dryValue);
31 foreach (
EntityAI cargoEntity : cargoEntities)
39 dryValue = (-1 *
m_ExecuteInterval * cargoItem.GetDryingIncrement(
"groundHeatSource")) * pSettings.m_ItemDryModifier * distanceToTemperatureSource;
40 Math.Clamp(dryValue, cargoItem.GetWetMin(), cargoItem.GetWetMax());
41 cargoItem.AddWet(dryValue);
51 float distanceToTemperatureSource;
52 float tempTarget = pSettings.m_TemperatureItemCap;
55 foreach (
Object nearestObject : nearestObjects)
57 if (
Class.CastTo(nearestEntity,nearestObject) && nearestEntity != pSettings.m_Parent && !nearestEntity.IsSelfAdjustingTemperature())
59 float temperatureDifference = tempTarget - nearestEntity.GetTemperature();
61 distanceToTemperatureSource =
vector.Distance(nearestEntity.GetPosition(), position);
62 distanceToTemperatureSource =
Math.Max(distanceToTemperatureSource, 0.1);
69 if (
vector.Distance(nearestEntity.GetPosition(), position) > pSettings.m_RangeFull)
71 distFactor =
Math.InverseLerp(pSettings.m_RangeMax,pSettings.m_RangeFull,distanceToTemperatureSource);
72 distFactor =
Math.Max(distFactor, 0.0);
75 TemperatureDataInterpolated dta =
new TemperatureDataInterpolated(tempTarget,
ETemperatureAccessTypes.ACCESS_UTS,time,pSettings.m_TemperatureItemCoef * distFactor);
77 if (nearestEntity.GetInventory())
81 else if (nearestEntity.CanHaveTemperature() && !nearestEntity.IsSelfAdjustingTemperature())
83 dta.m_HeatPermeabilityCoef = nearestEntity.GetHeatPermeabilityCoef();
85 if (
Math.AbsFloat(temperatureDifference) >=
GameConstants.TEMPERATURE_SENSITIVITY_THRESHOLD || !nearestEntity.IsFreezeThawProgressFinished())
86 nearestEntity.SetTemperatureEx(dta);
88 nearestEntity.RefreshTemperatureAccess(dta);
96 float heatPermCoef = heatPermeabilityCoef;
97 heatPermCoef *= ent.GetHeatPermeabilityCoef();
98 dta.m_HeatPermeabilityCoef = heatPermCoef;
101 if (ent.CanHaveTemperature() && !ent.IsSelfAdjustingTemperature())
103 float temperatureDifference = dta.m_AdjustedTarget - ent.GetTemperature();
104 if (
Math.AbsFloat(temperatureDifference) >=
GameConstants.TEMPERATURE_SENSITIVITY_THRESHOLD || !ent.IsFreezeThawProgressFinished())
105 ent.SetTemperatureEx(dta);
107 ent.RefreshTemperatureAccess(dta);
111 int inventoryAttCount = ent.GetInventory().AttachmentCount();
112 for (
int inAttIdx = 0; inAttIdx < inventoryAttCount; ++inAttIdx)
115 if (
Class.CastTo(attachmentEnt,ent.GetInventory().GetAttachmentFromIndex(inAttIdx)))
121 CargoBase cargo = ent.GetInventory().GetCargo();
124 int inventoryItemCount = cargo.GetItemCount();
125 for (
int j = 0; j < inventoryItemCount; ++j)
128 if (
Class.CastTo(cargoEnt, cargo.GetItem(j)))
138 resultValues.m_TemperatureItem = pSettings.m_TemperatureItemCap;
139 resultValues.m_TemperatureHeatcomfort = pSettings.m_TemperatureCap;
141 vector pos = pSettings.m_Position;
142 if (pSettings.m_Parent != null)
143 pos = pSettings.m_Parent.GetPosition();
146 float halfRange = pSettings.m_RangeMax;
149 vector minPos = pos -
Vector(halfRange, halfRange / 2, halfRange);
150 vector maxPos = pos +
Vector(halfRange, halfRange / 2, halfRange);
153 DayZPlayerUtils.SceneGetEntitiesInBox(minPos, maxPos, nearestObjects,
QueryFlags.DYNAMIC);
155 for (
int i = nearestObjects.Count() - 1; i >= 0; --i)
157 EntityAI entity = nearestObjects[i];
160 vector objPos = entity.GetPosition();
161 float distance =
vector.Distance(objPos, pos);
162 if (distance > pSettings.m_RangeMax)
163 nearestObjects.Remove(i);
167 if (nearestObjects.Count() > 0)
169 DryItemsInVicinity(pSettings, pos, nearestObjects);
170 WarmAndCoolItemsInVicinity(pSettings, pos, nearestObjects);
177 vector pos = pSettings.m_Position;
178 if (pSettings.m_Parent != null)
179 pos = pSettings.m_Parent.GetPosition();
182 float halfRange = pSettings.m_RangeMax;
185 vector minPos = pos -
Vector(halfRange, halfRange / 2, halfRange);
186 vector maxPos = pos +
Vector(halfRange, halfRange / 2, halfRange);
189 DayZPlayerUtils.SceneGetEntitiesInBox(minPos, maxPos, nearestObjects,
QueryFlags.DYNAMIC);
191 for (
int i = nearestObjects.Count() - 1; i >= 0; --i)
193 EntityAI entity = nearestObjects[i];
196 vector objPos = entity.GetPosition();
197 float distance =
vector.Distance(objPos, pos);
198 if (distance > pSettings.m_RangeMax)
199 nearestObjects.Remove(i);
203 DryItemsInVicinity(pSettings, pos, nearestObjects);
212 m_AffectsPlayer =
false;