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

◆ DryItemsInVicinity() [2/2]

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

heat transfer to items (not in player possession)

getting the actual distance

min distance cannot be 0 (division by zero)

calculating the coefficient we will use to deterimne strength of drying

making sure it is between 0.0 and 1.0

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

4 {
5 float distanceToTemperatureSource;
6
7 foreach (Object nearestObject : nearestObjects)
8 {
9 ItemBase nearestItem = ItemBase.Cast(nearestObject);
10 ItemBase temperatureSource = ItemBase.Cast(pSettings.m_Parent);
11
13 if (nearestItem && nearestItem.HasWetness() && nearestItem != pSettings.m_Parent && !nearestItem.IsInherited(Man) && !nearestItem.IsUniversalTemperatureSource())
14 {
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);
19
20 float dryValue = 0;
21
22 if (nearestItem.GetWet() >= GameConstants.STATE_DAMP)
23 {
24 dryValue = (-1 * m_ExecuteInterval * nearestItem.GetDryingIncrement("groundHeatSource")) * pSettings.m_ItemDryModifier * distanceToTemperatureSource;
25 Math.Clamp(dryValue, nearestItem.GetWetMin(), nearestItem.GetWetMax());
26 nearestItem.AddWet(dryValue);
27 }
28
29 array<EntityAI> cargoEntities = new array<EntityAI>();
30 nearestItem.GetInventory().EnumerateInventory(InventoryTraversalType.INORDER, cargoEntities);
31 foreach (EntityAI cargoEntity : cargoEntities)
32 {
33 ItemBase cargoItem = ItemBase.Cast(cargoEntity);
34 if (cargoItem)
35 {
36 dryValue = 0;
37 if (cargoItem.GetWet() >= GameConstants.STATE_DAMP)
38 {
39 dryValue = (-1 * m_ExecuteInterval * cargoItem.GetDryingIncrement("groundHeatSource")) * pSettings.m_ItemDryModifier * distanceToTemperatureSource;
40 Math.Clamp(dryValue, cargoItem.GetWetMin(), cargoItem.GetWetMax());
41 cargoItem.AddWet(dryValue);
42 }
43 }
44 }
45 }
46 }
47 }
class LogManager EntityAI
class GP5GasMask extends MaskBase ItemBase
float m_ItemDryModifier
maximum range where the receiver can get some temperature
Определения UniversalTemperatureSource.c:9
class LOD Object
InventoryTraversalType
tree traversal type, for more see http://en.wikipedia.org/wiki/Tree_traversal
Определения gameplay.c:6

Перекрестные ссылки Math::Clamp(), vector::Distance(), UniversalTemperatureSourceLambdaBase::m_ExecuteInterval, UniversalTemperatureSourceSettings::m_ItemDryModifier, UniversalTemperatureSourceSettings::m_Parent, Math::Max() и GameConstants::STATE_DAMP.

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