DayZ 1.29
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 строка 2342

2343 {
2344 #ifdef DEVELOPER
2345 m_LastFTChangeTime = -1;
2346 m_PresumedTimeRemaining = -1;
2347 #endif
2348
2349 if (!CanHaveTemperature())
2350 {
2351 Debug.Log("SetTemperatureEx | entity " + this + " does not have temperature range defined!");
2352 return;
2353 }
2354
2355 if (!m_TAC.TryAccessSource(data))
2356 return;
2357
2358 if (!IsServerCheck(false))
2359 return;
2360
2361 InterpolateTempData(TemperatureDataInterpolated.Cast(data));
2362 float target = Math.Clamp(data.m_AdjustedTarget, GetTemperatureMin(), GetTemperatureMax());
2363 float delta;
2364 //overheating
2365 if (CanItemOverheat())
2366 {
2368 delta = data.m_AdjustedTarget - GetTemperature();
2369 else
2371
2372 HandleItemOverheating(delta,data);
2373 }
2374
2375 //freezing, can obstruct temperature change
2376 if (CanFreeze())
2377 {
2378 if (!m_IsFrozen)
2379 {
2380 delta = target - GetTemperatureFreezeThreshold();
2381 if (target < GetTemperatureFreezeThreshold())
2382 {
2383 //first crossing the threshold
2384 if (m_VarTemperature >= GetTemperatureFreezeThreshold()) //going DOWN or STAYING AT THRESHOLD, FREEZING;
2385 {
2387 }
2388 else //going UP, still FREEZING
2389 {
2390 SetTemperatureDirect(target);
2391 }
2392 HandleFreezingProgression(delta,data);
2393 }
2394 else
2395 {
2396 SetTemperatureDirect(target);
2397 if (target > GetTemperatureFreezeThreshold())
2398 HandleFreezingProgression(delta,data);
2399 }
2400 }
2401 else
2402 {
2403 delta = target - GetTemperatureThawThreshold();
2404 if (target > GetTemperatureThawThreshold())
2405 {
2406 //first crossing the threshold
2407 if (m_VarTemperature <= GetTemperatureThawThreshold()) //going UP, THAWING
2408 {
2410 }
2411 else //going DOWN, still THAWING
2412 {
2413 SetTemperatureDirect(target);
2414 }
2415 HandleFreezingProgression(delta,data);
2416 }
2417 else
2418 {
2419 SetTemperatureDirect(target);
2420 if (target < GetTemperatureThawThreshold())
2421 HandleFreezingProgression(delta,data);
2422 }
2423 }
2424 }
2425 else
2426 {
2427 SetTemperatureDirect(target);
2428 }
2429 }
string Debug()
Определения CachedEquipmentStorageBase.c:29
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().