2511 {
2513 float progressDelta = 1;
2514
2515 if (deltaHeat > 0)
2516 progressDelta = -1;
2517
2519 progressDelta = (-deltaHeat / GameConstants.TEMPERATURE_RATE_AVERAGE_ABS) * GameConstants.TEMPERATURE_FREEZETHAW_LEGACY_COEF;
2520 else
2522
2523 if (progressDelta == 0)
2524 return;
2525
2526 float changeTimeDefault;
2527 float changeTimeMin;
2528 float changeTime;
2529
2531 {
2533 changeTimeMin = GameConstants.TEMPERATURE_TIME_FREEZE_MIN;
2534 }
2535 else
2536 {
2538 changeTimeMin = GameConstants.TEMPERATURE_TIME_THAW_MIN;
2539 }
2540
2542 if (deltaHeat < 0)
2543 coef = GameConstants.TEMP_COEF_COOLING_GLOBAL;
2544
2545 if (coef != 0)
2546 changeTimeDefault *= 1/coef;
2547
2548 changeTime = Math.Lerp(Math.Max(changeTimeDefault,changeTimeMin),changeTimeMin,data.
m_InterpolatedFraction);
2549 progressVal = progressVal + progressDelta / changeTime;
2550
2551 float remnantTemp = 0;
2553 {
2555 if (progressVal > 1.0)
2556 {
2558 remnantTemp = (progressVal - 1) * changeTime * GameConstants.TEMPERATURE_RATE_AVERAGE_ABS * -1;
2559 else
2560 remnantTemp = (((progressVal - 1) * changeTime) / progressDelta) * deltaHeat;
2561 }
2562 }
2564 {
2566 if (progressVal < 0.0)
2567 {
2569 remnantTemp = -progressVal * changeTime * GameConstants.TEMPERATURE_RATE_AVERAGE_ABS;
2570 else
2571 remnantTemp = ((-progressVal * changeTime) / progressDelta) * deltaHeat;
2572 }
2573 }
2574 else
2575 {
2577 progressVal = (progressDelta * GameConstants.TEMPERATURE_FREEZETHAW_ACCELERATION_COEF) / changeTime +
m_FreezeThawProgress;
2578
2580 }
2581
2582 if (remnantTemp >= GameConstants.TEMPERATURE_SENSITIVITY_THRESHOLD)
2584
2585 #ifdef DEVELOPER
2586 if (progressVal > 0 && progressVal < 1)
2587 {
2588 m_LastFTChangeTime = changeTime;
2590 m_PresumedTimeRemaining = (1 - progressVal) * changeTime;
2591 else
2592 m_PresumedTimeRemaining = progressVal * changeTime;
2593 }
2594 #endif
2595 }
float GetTemperatureFreezeTime()
void SetFrozen(bool frozen)
void SetFreezeThawProgress(float val)
0->1 when freezing, 1->0 when thawing
float GetTemperatureThawTime()
float m_FreezeThawProgress
void SetTemperatureDirect(float value, bool allow_client=false)
float m_InterpolatedFraction