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

◆ SetTemperatureEx()

void Entity::SetTemperatureEx ( TemperatureData data)
inlineprotected

sets temperature, handles base overheating and freezing state progression logics

CanFreeze

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

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