PC Stable Documentation
 
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
Loading...
Searching...
No Matches
Environment Class Reference

Private Member Functions

void Environment (PlayerBase pPlayer)
 
void Init ()
 
void Update (float pDelta)
 
bool IsTemperatureSet ()
 
protected float GetPlayerHeat ()
 Returns heat player generated based on player's movement speed (for now)
 
bool IsUnderRoof ()
 
protected bool IsWaterContact ()
 
bool IsInsideBuilding ()
 
protected bool IsInsideVehicle ()
 
private bool IsChildOfType (array< typename > typenames)
 
private bool IsUnderRoofBuilding ()
 
protected bool IsRaining ()
 
protected bool IsSnowing ()
 
protected bool DetermineHeatcomfortBehavior ()
 
protected void CheckUnderRoof ()
 Checks whether Player is sheltered.
 
protected void CheckWaterContact (out float pWaterLevel)
 
float GetWindModifierPerSurface ()
 
float GetTemperature ()
 
float GetTargetHeatComfort ()
 
protected float GetEnvironmentTemperature ()
 
float GetWetDelta ()
 
protected void CollectAndSetPlayerData ()
 
protected void CollectAndSetEnvironmentData ()
 
void SetEnvironmentTemperature ()
 
void SetAreaGenericColdness ()
 Determines whether player is in cold area which restricts use of some actions (digging)
 
protected void ProcessWetnessByWaterLevel (float pWaterLevel)
 process attachments by water depth
 
protected void ProcessItemsWetness (array< int > pSlotIds)
 
protected void ProcessItemsDryness ()
 
protected void ApplyWetnessToItem (ItemBase pItem)
 
protected void ApplyDrynessToItem (ItemBase pItem)
 
protected void ApplyDrynessToItemEx (ItemBase pItem, EnvironmentDrynessData pDrynessData)
 
protected void ProcessHeatComfort ()
 Calculates and process player's heatcomfort related to body parts.
 
protected void SetTargetHeatComfort (float value)
 
protected void SetHeatcomfortDirectly ()
 
protected void ProcessHeatBuffer (EnvironmentSnapshotData data)
 
protected float GetApplicableHeatbuffer ()
 
protected void ProcessItemsTemperature (array< int > pBodyPartIds)
 go through all items in player's possession cool/warm them to neutral temperature
 
protected void ProcessItemsInHandsTemperature ()
 
protected void ProcessItemHierarchyRecursive (ItemBase item, float heatPermeabilityCoef=1.0)
 
protected void SetProcessedItemTemperature (ItemBase item, float heatPermeabilityCoef=1.0)
 
protected float EnvTempToCoef (float pTemp)
 
protected void BodyPartHeatProperties (int pBodyPartId, float pCoef, out float pHeatComfort, out float pHeat)
 returns enhanced heat comfort for given body part
 
protected float NakedBodyPartHeatComfortPenalty (int pBodyPartSlotId, float pCoef)
 
protected void GatherTemperatureSources ()
 
protected void SetItemHeatingCoef (float val)
 
protected void ProcessTemperatureSources ()
 
protected void OnTemperatureSourcesEnter ()
 
protected void OnTemperatureSourcesLeft ()
 
float GetUniversalSourcesTemperageAverage ()
 
float CalcTemperatureFromTemperatureSource (notnull UTemperatureSource uts)
 
string GetDebugMessage ()
 debug
 
int GetNextRoofCheck ()
 
float GetWaterLevel ()
 
private bool IsNeutralTemperature (float temperature, float lowerLimit=GameConstants.ITEM_TEMPERATURE_NEUTRAL_ZONE_LOWER_LIMIT, float upperLimit=GameConstants.ITEM_TEMPERATURE_NEUTRAL_ZONE_UPPER_LIMIT)
 
private float NormalizedTemperature (float temperature, float lowerLimit=GameConstants.ENVIRO_LOW_TEMP_LIMIT, float upperLimit=GameConstants.ENVIRO_HIGH_TEMP_LIMIT)
 
private void LogDryWetProcess (string message, bool indented=false)
 
private void LogItemHeat (string message, bool indented=false)
 
void Init (PlayerBase pPlayer)
 used for calculations before the data modification
 
protected bool OverridenHeatComfort (out float value)
 
void AddToEnvironmentTemperature (float pTemperature)
 
protected void ProcessItemsHeat ()
 
protected void ProcessWetnessByRain ()
 
float GetTemperatureHeightCorrection ()
 
protected void BodyPartHeatProperties (array< int > pBodyPartIds, float pCoef, out float pHeatComfort, out float pHeat)
 returns weighted avg heat comfort for bodypart
 
protected void SetEnvironmentSnapshotData ()
 
protected void ProcessHeatBuffer (float heatComfortCloths)
 backward compatibility [<1.27]
 
protected float WindEffectTemperatureValue (float temperatureInput)
 backward compatibility [<1.28]
 
float GetDayOrNight ()
 

Private Attributes

const float RAIN_LIMIT_LOW = 0.05
 
protected const float SNOWFALL_LIMIT_LOW = 0.5
 
protected const float SNOWFALL_WIND_COMBINED_THRESHOLD = 1.3
 
const float WATER_LEVEL_HIGH = 1.5
 
const float WATER_LEVEL_MID = 1.2
 
const float WATER_LEVEL_LOW = 0.5
 
const float WATER_LEVEL_NONE = 0.15
 
protected float m_WetDryTick
 
protected float m_ItemsWetnessMax
 
protected float m_RoofCheckTimer
 keeps wetness of most wet item in player's possesion
 
protected PlayerBase m_Player
 
protected float m_PlayerHeightPos
 
protected float m_PlayerSpeed
 
protected float m_PlayerTemperature
 
protected float m_PlayerHeat
 
protected float m_HeatComfort
 
protected float m_TargetHeatComfort
 player's heatcomfort (buffered, stored in player stats)
 
protected float m_Rain = 0
 target value of heatcomfort (non-buffered)
 
protected float m_Snowfall = 0
 
protected float m_Wind = 0
 
protected float m_Fog = 0
 
protected float m_DayOrNight = 0
 
protected float m_Clouds = 0
 
protected float m_EnvironmentTemperature
 
protected float m_Time = 0
 
protected string m_SurfaceType
 
protected int m_LiquidType
 
protected float m_ItemTemperatureCoef
 
protected float m_WaterLevel
 
protected bool m_IsUnderRoof
 
private bool m_IsUnderRoofBuilding
 
protected bool m_IsInWater
 
protected bool m_IsTempSet
 
protected float m_HeatBufferTimer
 
protected float m_HeatBufferCapPrevious
 reused as state toggle
 
protected ref array< intm_SlotIdsComplete
 
protected ref array< intm_SlotIdsUpper
 
protected ref array< intm_SlotIdsBottom
 
protected ref array< intm_SlotIdsLower
 
protected ref array< intm_HeadParts
 
protected ref array< intm_BodyParts
 
protected ref array< intm_FeetParts
 
protected WorldData m_WorldData
 
protected bool m_HasTemperatureSources
 
protected float m_UTSAverageTemperature
 
protected ref array< UTemperatureSource > m_UTemperatureSources
 
protected ref SimpleMovingAverage< floatm_UTSAverageTemperatureBuffer
 
protected ref SimpleMovingAverage< floatm_AverageHeatComfortBuffer
 
protected int m_HeatComfortBehaviorCategory
 
private bool m_Initialized
 
protected float m_HeatSourceTemp
 DEPRECATED.
 
protected ref SimpleMovingAverage< floatm_WindAverageBuffer
 
protected ref EnvironmentSnapshotData m_EnvironmentSnapshot
 

Constructor & Destructor Documentation

◆ Environment()

void Environment ( PlayerBase  pPlayer)
inlineprivate

References m_Player.

Member Function Documentation

◆ AddToEnvironmentTemperature()

void AddToEnvironmentTemperature ( float  pTemperature)
private

◆ ApplyDrynessToItem()

protected void ApplyDrynessToItem ( ItemBase  pItem)
inlineprivate

◆ ApplyDrynessToItemEx()

protected void ApplyDrynessToItemEx ( ItemBase  pItem,
EnvironmentDrynessData  pDrynessData 
)
inlineprivate

◆ ApplyWetnessToItem()

◆ BodyPartHeatProperties() [1/2]

protected void BodyPartHeatProperties ( array< int pBodyPartIds,
float  pCoef,
out float  pHeatComfort,
out float  pHeat 
)
inlineprivate

returns weighted avg heat comfort for bodypart

go through all body parts we've defined for that zone (ex.: head, body, feet)

References EnumTools::EnumToString(), GameConstants::ENVIRO_HEATISOLATION_BACK_WEIGHT, GameConstants::ENVIRO_HEATISOLATION_VEST_WEIGHT, GameConstants::ITEM_TEMPERATURE_NEUTRAL_ZONE_UPPER_LIMIT, LogItemHeat(), m_Player, and NormalizedTemperature().

◆ BodyPartHeatProperties() [2/2]

protected void BodyPartHeatProperties ( int  pBodyPartId,
float  pCoef,
out float  pHeatComfort,
out float  pHeat 
)
inlineprivate

◆ CalcTemperatureFromTemperatureSource()

float CalcTemperatureFromTemperatureSource ( notnull UTemperatureSource  uts)
inlineprivate

heat transfer through air to player (env temperature)

References vector::Distance(), Math::InverseLerp(), m_Player, and Math::Max().

Referenced by ProcessTemperatureSources().

◆ CheckUnderRoof()

protected void CheckUnderRoof ( )
inlineprivate

Checks whether Player is sheltered.

References IsChildOfType(), m_IsUnderRoof, m_IsUnderRoofBuilding, m_Player, and DayZPhysics::RayCastBullet().

Referenced by Update().

◆ CheckWaterContact()

protected void CheckWaterContact ( out float  pWaterLevel)
inlineprivate

◆ CollectAndSetEnvironmentData()

◆ CollectAndSetPlayerData()

protected void CollectAndSetPlayerData ( )
inlineprivate

◆ DetermineHeatcomfortBehavior()

protected bool DetermineHeatcomfortBehavior ( )
inlineprivate

◆ EnvTempToCoef()

protected float EnvTempToCoef ( float  pTemp)
inlineprivate

◆ GatherTemperatureSources()

protected void GatherTemperatureSources ( )
inlineprivate

next temp source is too far

skip - this TS is not affecting player entities

References vector::DistanceSq(), GameConstants::ENVIRO_TEMP_SOURCES_LOOKUP_RADIUS, GetGame(), CGame::GetObjectsAtPosition(), m_Player, m_UTemperatureSources, and Math::SqrFloat().

Referenced by Update().

◆ GetApplicableHeatbuffer()

protected float GetApplicableHeatbuffer ( )
inlineprivate

References m_Player, and Math::Round().

Referenced by ProcessHeatBuffer().

◆ GetDayOrNight()

float GetDayOrNight ( )
inlineprivate

References m_DayOrNight.

◆ GetDebugMessage()

◆ GetEnvironmentTemperature()

◆ GetNextRoofCheck()

int GetNextRoofCheck ( )
inlineprivate

◆ GetPlayerHeat()

protected float GetPlayerHeat ( )
inlineprivate

Returns heat player generated based on player's movement speed (for now)

References GameConstants::ENVIRO_DEFAULT_ENTITY_HEAT, and m_PlayerSpeed.

Referenced by CollectAndSetPlayerData(), and ProcessHeatComfort().

◆ GetTargetHeatComfort()

float GetTargetHeatComfort ( )
inlineprivate

References m_TargetHeatComfort.

Referenced by GetDebugMessage().

◆ GetTemperature()

float GetTemperature ( )
inlineprivate

◆ GetTemperatureHeightCorrection()

float GetTemperatureHeightCorrection ( )
inlineprivate

◆ GetUniversalSourcesTemperageAverage()

float GetUniversalSourcesTemperageAverage ( )
inlineprivate

◆ GetWaterLevel()

float GetWaterLevel ( )
inlineprivate

◆ GetWetDelta()

◆ GetWindModifierPerSurface()

float GetWindModifierPerSurface ( )
inlineprivate

◆ Init() [1/2]

◆ Init() [2/2]

void Init ( PlayerBase  pPlayer)
inlineprivate

used for calculations before the data modification

References Init().

◆ IsChildOfType()

◆ IsInsideBuilding()

bool IsInsideBuilding ( )
inlineprivate

◆ IsInsideVehicle()

protected bool IsInsideVehicle ( )
inlineprivate

References m_Player.

◆ IsNeutralTemperature()

private bool IsNeutralTemperature ( float  temperature,
float  lowerLimit = GameConstants.ITEM_TEMPERATURE_NEUTRAL_ZONE_LOWER_LIMIT,
float  upperLimit = GameConstants.ITEM_TEMPERATURE_NEUTRAL_ZONE_UPPER_LIMIT 
)
inlineprivate

◆ IsRaining()

protected bool IsRaining ( )
inlineprivate

References m_Rain, and RAIN_LIMIT_LOW.

Referenced by GetWetDelta(), and Update().

◆ IsSnowing()

protected bool IsSnowing ( )
inlineprivate

References m_Snowfall, and SNOWFALL_LIMIT_LOW.

Referenced by GetWetDelta(), and Update().

◆ IsTemperatureSet()

bool IsTemperatureSet ( )
inlineprivate

References m_IsTempSet.

◆ IsUnderRoof()

bool IsUnderRoof ( )
inlineprivate

◆ IsUnderRoofBuilding()

private bool IsUnderRoofBuilding ( )
inlineprivate

◆ IsWaterContact()

protected bool IsWaterContact ( )
inlineprivate

◆ LogDryWetProcess()

private void LogDryWetProcess ( string  message,
bool  indented = false 
)
inlineprivate

◆ LogItemHeat()

private void LogItemHeat ( string  message,
bool  indented = false 
)
inlineprivate

◆ NakedBodyPartHeatComfortPenalty()

◆ NormalizedTemperature()

◆ OnTemperatureSourcesEnter()

protected void OnTemperatureSourcesEnter ( )
private

◆ OnTemperatureSourcesLeft()

protected void OnTemperatureSourcesLeft ( )
private

◆ OverridenHeatComfort()

protected bool OverridenHeatComfort ( out float  value)
private

◆ ProcessHeatBuffer() [1/2]

◆ ProcessHeatBuffer() [2/2]

protected void ProcessHeatBuffer ( float  heatComfortCloths)
inlineprivate

backward compatibility [<1.27]

References m_EnvironmentSnapshot, m_TargetHeatComfort, and ProcessHeatBuffer().

◆ ProcessHeatComfort()

◆ ProcessItemHierarchyRecursive()

protected void ProcessItemHierarchyRecursive ( ItemBase  item,
float  heatPermeabilityCoef = 1.0 
)
inlineprivate

◆ ProcessItemsDryness()

◆ ProcessItemsHeat()

protected void ProcessItemsHeat ( )
inlineprivate

References ProcessHeatComfort().

◆ ProcessItemsInHandsTemperature()

protected void ProcessItemsInHandsTemperature ( )
inlineprivate

◆ ProcessItemsTemperature()

protected void ProcessItemsTemperature ( array< int pBodyPartIds)
inlineprivate

go through all items in player's possession cool/warm them to neutral temperature

go through all body parts we've defined for that zone (ex.: head, body, feet)

References ItemBase::IsSelfAdjustingTemperature(), m_Player, ProcessItemHierarchyRecursive(), and SetProcessedItemTemperature().

Referenced by Update().

◆ ProcessItemsWetness()

protected void ProcessItemsWetness ( array< int pSlotIds)
inlineprivate

◆ ProcessTemperatureSources()

◆ ProcessWetnessByRain()

protected void ProcessWetnessByRain ( )
inlineprivate

◆ ProcessWetnessByWaterLevel()

protected void ProcessWetnessByWaterLevel ( float  pWaterLevel)
inlineprivate

◆ SetAreaGenericColdness()

void SetAreaGenericColdness ( )
inlineprivate

Determines whether player is in cold area which restricts use of some actions (digging)

References GameConstants::COLD_AREA_TEMPERATURE_THRESHOLD, WorldData::GetBaseEnvTemperatureAtObject(), m_Player, and m_WorldData.

Referenced by CollectAndSetEnvironmentData().

◆ SetEnvironmentSnapshotData()

protected void SetEnvironmentSnapshotData ( )
inlineprivate

◆ SetEnvironmentTemperature()

void SetEnvironmentTemperature ( )
inlineprivate

◆ SetHeatcomfortDirectly()

protected void SetHeatcomfortDirectly ( )
inlineprivate

◆ SetItemHeatingCoef()

protected void SetItemHeatingCoef ( float  val)
inlineprivate

◆ SetProcessedItemTemperature()

◆ SetTargetHeatComfort()

protected void SetTargetHeatComfort ( float  value)
inlineprivate

◆ Update()

◆ WindEffectTemperatureValue()

protected float WindEffectTemperatureValue ( float  temperatureInput)
inlineprivate

Field Documentation

◆ m_AverageHeatComfortBuffer

protected ref SimpleMovingAverage<float> m_AverageHeatComfortBuffer
private

◆ m_BodyParts

protected ref array<int> m_BodyParts
private

Referenced by Init(), and Update().

◆ m_Clouds

protected float m_Clouds = 0
private

◆ m_DayOrNight

protected float m_DayOrNight = 0
private

◆ m_EnvironmentSnapshot

protected ref EnvironmentSnapshotData m_EnvironmentSnapshot
private

◆ m_EnvironmentTemperature

protected float m_EnvironmentTemperature
private

◆ m_FeetParts

protected ref array<int> m_FeetParts
private

Referenced by Init(), and Update().

◆ m_Fog

protected float m_Fog = 0
private

◆ m_HasTemperatureSources

protected bool m_HasTemperatureSources
private

◆ m_HeadParts

protected ref array<int> m_HeadParts
private

Referenced by Init(), and Update().

◆ m_HeatBufferCapPrevious

protected float m_HeatBufferCapPrevious
private

reused as state toggle

Referenced by ProcessHeatBuffer().

◆ m_HeatBufferTimer

protected float m_HeatBufferTimer
private

Referenced by Init(), and ProcessHeatBuffer().

◆ m_HeatComfort

protected float m_HeatComfort
private

◆ m_HeatComfortBehaviorCategory

protected int m_HeatComfortBehaviorCategory
private

◆ m_HeatSourceTemp

protected float m_HeatSourceTemp
private

DEPRECATED.

◆ m_Initialized

private bool m_Initialized
private

Referenced by Init(), and Update().

◆ m_IsInWater

protected bool m_IsInWater
private

◆ m_IsTempSet

protected bool m_IsTempSet
private

◆ m_IsUnderRoof

protected bool m_IsUnderRoof
private

◆ m_IsUnderRoofBuilding

private bool m_IsUnderRoofBuilding
private

◆ m_ItemsWetnessMax

protected float m_ItemsWetnessMax
private

◆ m_ItemTemperatureCoef

protected float m_ItemTemperatureCoef
private

◆ m_LiquidType

protected int m_LiquidType
private

◆ m_Player

◆ m_PlayerHeat

protected float m_PlayerHeat
private

◆ m_PlayerHeightPos

protected float m_PlayerHeightPos
private

◆ m_PlayerSpeed

protected float m_PlayerSpeed
private

◆ m_PlayerTemperature

protected float m_PlayerTemperature
private

◆ m_Rain

protected float m_Rain = 0
private

target value of heatcomfort (non-buffered)

Referenced by CollectAndSetEnvironmentData(), GetDebugMessage(), GetWetDelta(), IsRaining(), and NakedBodyPartHeatComfortPenalty().

◆ m_RoofCheckTimer

protected float m_RoofCheckTimer
private

keeps wetness of most wet item in player's possesion

Referenced by GetNextRoofCheck(), Init(), and Update().

◆ m_SlotIdsBottom

protected ref array<int> m_SlotIdsBottom
private

Referenced by Init(), and ProcessWetnessByWaterLevel().

◆ m_SlotIdsComplete

protected ref array<int> m_SlotIdsComplete
private

◆ m_SlotIdsLower

protected ref array<int> m_SlotIdsLower
private

Referenced by Init(), and ProcessWetnessByWaterLevel().

◆ m_SlotIdsUpper

protected ref array<int> m_SlotIdsUpper
private

Referenced by Init(), and ProcessWetnessByWaterLevel().

◆ m_Snowfall

◆ m_SurfaceType

protected string m_SurfaceType
private

◆ m_TargetHeatComfort

protected float m_TargetHeatComfort
private

player's heatcomfort (buffered, stored in player stats)

Referenced by GetTargetHeatComfort(), ProcessHeatBuffer(), SetEnvironmentSnapshotData(), and SetTargetHeatComfort().

◆ m_Time

protected float m_Time = 0
private

Referenced by Update().

◆ m_UTemperatureSources

protected ref array<UTemperatureSource> m_UTemperatureSources
private

◆ m_UTSAverageTemperature

◆ m_UTSAverageTemperatureBuffer

protected ref SimpleMovingAverage<float> m_UTSAverageTemperatureBuffer
private

Referenced by Init(), and ProcessTemperatureSources().

◆ m_WaterLevel

protected float m_WaterLevel
private

◆ m_WetDryTick

protected float m_WetDryTick
private

Referenced by Init(), and Update().

◆ m_Wind

◆ m_WindAverageBuffer

protected ref SimpleMovingAverage<float> m_WindAverageBuffer
private

◆ m_WorldData

◆ RAIN_LIMIT_LOW

const float RAIN_LIMIT_LOW = 0.05
private

Referenced by IsRaining().

◆ SNOWFALL_LIMIT_LOW

protected const float SNOWFALL_LIMIT_LOW = 0.5
private

Referenced by GetWetDelta(), and IsSnowing().

◆ SNOWFALL_WIND_COMBINED_THRESHOLD

protected const float SNOWFALL_WIND_COMBINED_THRESHOLD = 1.3
private

Referenced by GetWetDelta(), and Update().

◆ WATER_LEVEL_HIGH

const float WATER_LEVEL_HIGH = 1.5
private

◆ WATER_LEVEL_LOW

const float WATER_LEVEL_LOW = 0.5
private

◆ WATER_LEVEL_MID

const float WATER_LEVEL_MID = 1.2
private

◆ WATER_LEVEL_NONE

const float WATER_LEVEL_NONE = 0.15
private

The documentation for this class was generated from the following file: