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

◆ SetTemperatureEx()

void Entity::SetTemperatureEx ( TemperatureData data)
inlineprotected

sets temperature, handles base overheating and freezing state progression logics

CanFreeze

См. определение в файле 3_Game/Entities/EntityAI.c строка 2298

2299 {
2300 #ifdef DEVELOPER
2301 m_LastFTChangeTime = -1;
2302 m_PresumedTimeRemaining = -1;
2303 #endif
2304
2305 if (!CanHaveTemperature())
2306 {
2307 Debug.Log("SetTemperatureEx | entity " + this + " does not have temperature range defined!");
2308 return;
2309 }
2310
2311 if (!m_TAC.TryAccessSource(data))
2312 return;
2313
2314 if (!IsServerCheck(false))
2315 return;
2316
2317 InterpolateTempData(TemperatureDataInterpolated.Cast(data));
2318 float target = Math.Clamp(data.m_AdjustedTarget, GetTemperatureMin(), GetTemperatureMax());
2319 float delta;
2320 //overheating
2321 if (CanItemOverheat())
2322 {
2324 delta = data.m_AdjustedTarget - GetTemperature();
2325 else
2327
2328 HandleItemOverheating(delta,data);
2329 }
2330
2331 //freezing, can obstruct temperature change
2332 if (CanFreeze())
2333 {
2334 if (!m_IsFrozen)
2335 {
2336 delta = target - GetTemperatureFreezeThreshold();
2337 if (target < GetTemperatureFreezeThreshold())
2338 {
2339 //first crossing the threshold
2340 if (m_VarTemperature >= GetTemperatureFreezeThreshold()) //going DOWN or STAYING AT THRESHOLD, FREEZING;
2341 {
2343 }
2344 else //going UP, still FREEZING
2345 {
2346 SetTemperatureDirect(target);
2347 }
2348 HandleFreezingProgression(delta,data);
2349 }
2350 else
2351 {
2352 SetTemperatureDirect(target);
2353 if (target > GetTemperatureFreezeThreshold())
2354 HandleFreezingProgression(delta,data);
2355 }
2356 }
2357 else
2358 {
2359 delta = target - GetTemperatureThawThreshold();
2360 if (target > GetTemperatureThawThreshold())
2361 {
2362 //first crossing the threshold
2363 if (m_VarTemperature <= GetTemperatureThawThreshold()) //going UP, THAWING
2364 {
2366 }
2367 else //going DOWN, still THAWING
2368 {
2369 SetTemperatureDirect(target);
2370 }
2371 HandleFreezingProgression(delta,data);
2372 }
2373 else
2374 {
2375 SetTemperatureDirect(target);
2376 if (target < GetTemperatureThawThreshold())
2377 HandleFreezingProgression(delta,data);
2378 }
2379 }
2380 }
2381 else
2382 {
2383 SetTemperatureDirect(target);
2384 }
2385 }
void Debug()
Определения UniversalTemperatureSource.c:349
void InterpolateTempData(TemperatureDataInterpolated data)
Определения 3_Game/Entities/EntityAI.c:2399
ref TemperatureAccessComponent m_TAC
Определения 3_Game/Entities/EntityAI.c:158
float GetTemperatureFreezeThreshold()
Определения 3_Game/Entities/EntityAI.c:2448
float GetItemOverheatThreshold()
if undefined, max temperature used as default
Определения 3_Game/Entities/EntityAI.c:2610
bool m_IsFrozen
Определения 3_Game/Entities/EntityAI.c:160
float GetTemperatureMin()
Определения 3_Game/Entities/EntityAI.c:2423
float m_VarTemperature
Определения 3_Game/Entities/EntityAI.c:147
void HandleFreezingProgression(float deltaHeat, TemperatureData data)
Определения 3_Game/Entities/EntityAI.c:2512
float GetTemperature()
Определения 3_Game/Entities/EntityAI.c:2413
bool CanHaveTemperature()
returns true used on selected items that have a temperature effect and can processes temperature chan...
Определения 3_Game/Entities/EntityAI.c:3801
bool CanItemOverheat()
Overheat time CAN be 0, GameConstants.TEMPERATURE_TIME_OVERHEAT_MIN is ignored if so.
Определения 3_Game/Entities/EntityAI.c:2604
bool CanFreeze()
Определения 3_Game/Entities/EntityAI.c:2486
void SetTemperatureDirect(float value, bool allow_client=false)
Определения 3_Game/Entities/EntityAI.c:2264
float GetTemperatureThawThreshold()
Определения 3_Game/Entities/EntityAI.c:2453
bool IsServerCheck(bool allow_client)
Определения 3_Game/Entities/EntityAI.c:2724
void HandleItemOverheating(float deltaHeat, TemperatureData data)
Определения 3_Game/Entities/EntityAI.c:2654
float GetTemperatureMax()
Определения 3_Game/Entities/EntityAI.c:2428
float m_AdjustedTarget
Определения TemperatureData.c:6

Перекрестные ссылки CanFreeze(), CanHaveTemperature(), CanItemOverheat(), Math::Clamp(), GetItemOverheatThreshold(), GetTemperature(), GetTemperatureFreezeThreshold(), GetTemperatureMax(), GetTemperatureMin(), GetTemperatureThawThreshold(), HandleFreezingProgression(), HandleItemOverheating(), InterpolateTempData(), IsServerCheck(), Debug::Log(), TemperatureData::m_AdjustedTarget, m_IsFrozen, m_TAC, m_VarTemperature и SetTemperatureDirect().

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