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

◆ SetTemperatureEx()

void Entity::SetTemperatureEx ( TemperatureData data)
inlineprotected

sets temperature, handles base overheating and freezing state progression logics

CanFreeze

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

2328 {
2329 #ifdef DEVELOPER
2330 m_LastFTChangeTime = -1;
2331 m_PresumedTimeRemaining = -1;
2332 #endif
2333
2334 if (!CanHaveTemperature())
2335 {
2336 Debug.Log("SetTemperatureEx | entity " + this + " does not have temperature range defined!");
2337 return;
2338 }
2339
2340 if (!m_TAC.TryAccessSource(data))
2341 return;
2342
2343 if (!IsServerCheck(false))
2344 return;
2345
2346 InterpolateTempData(TemperatureDataInterpolated.Cast(data));
2347 float target = Math.Clamp(data.m_AdjustedTarget, GetTemperatureMin(), GetTemperatureMax());
2348 float delta;
2349 //overheating
2350 if (CanItemOverheat())
2351 {
2353 delta = data.m_AdjustedTarget - GetTemperature();
2354 else
2356
2357 HandleItemOverheating(delta,data);
2358 }
2359
2360 //freezing, can obstruct temperature change
2361 if (CanFreeze())
2362 {
2363 if (!m_IsFrozen)
2364 {
2365 delta = target - GetTemperatureFreezeThreshold();
2366 if (target < GetTemperatureFreezeThreshold())
2367 {
2368 //first crossing the threshold
2369 if (m_VarTemperature >= GetTemperatureFreezeThreshold()) //going DOWN or STAYING AT THRESHOLD, FREEZING;
2370 {
2372 }
2373 else //going UP, still FREEZING
2374 {
2375 SetTemperatureDirect(target);
2376 }
2377 HandleFreezingProgression(delta,data);
2378 }
2379 else
2380 {
2381 SetTemperatureDirect(target);
2382 if (target > GetTemperatureFreezeThreshold())
2383 HandleFreezingProgression(delta,data);
2384 }
2385 }
2386 else
2387 {
2388 delta = target - GetTemperatureThawThreshold();
2389 if (target > GetTemperatureThawThreshold())
2390 {
2391 //first crossing the threshold
2392 if (m_VarTemperature <= GetTemperatureThawThreshold()) //going UP, THAWING
2393 {
2395 }
2396 else //going DOWN, still THAWING
2397 {
2398 SetTemperatureDirect(target);
2399 }
2400 HandleFreezingProgression(delta,data);
2401 }
2402 else
2403 {
2404 SetTemperatureDirect(target);
2405 if (target < GetTemperatureThawThreshold())
2406 HandleFreezingProgression(delta,data);
2407 }
2408 }
2409 }
2410 else
2411 {
2412 SetTemperatureDirect(target);
2413 }
2414 }
string Debug()
Определения CachedEquipmentStorageBase.c:26
void InterpolateTempData(TemperatureDataInterpolated data)
ref TemperatureAccessComponent m_TAC
float GetTemperatureFreezeThreshold()
float GetItemOverheatThreshold()
if undefined, max temperature used as default
bool m_IsFrozen
float GetTemperatureMin()
float m_VarTemperature
void HandleFreezingProgression(float deltaHeat, TemperatureData data)
float GetTemperature()
bool CanHaveTemperature()
returns true used on selected items that have a temperature effect and can processes temperature chan...
bool CanItemOverheat()
Overheat time CAN be 0, GameConstants.TEMPERATURE_TIME_OVERHEAT_MIN is ignored if so.
bool CanFreeze()
void SetTemperatureDirect(float value, bool allow_client=false)
float GetTemperatureThawThreshold()
bool IsServerCheck(bool allow_client)
void HandleItemOverheating(float deltaHeat, TemperatureData data)
float GetTemperatureMax()
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().