2542 {
2544 float progressDelta = 1;
2545
2546 if (deltaHeat > 0)
2547 progressDelta = -1;
2548
2550 progressDelta = (-deltaHeat / GameConstants.TEMPERATURE_RATE_AVERAGE_ABS) * GameConstants.TEMPERATURE_FREEZETHAW_LEGACY_COEF;
2551 else
2553
2554 if (progressDelta == 0)
2555 return;
2556
2557 float changeTimeDefault;
2558 float changeTimeMin;
2559 float changeTime;
2560
2562 {
2564 changeTimeMin = GameConstants.TEMPERATURE_TIME_FREEZE_MIN;
2565 }
2566 else
2567 {
2569 changeTimeMin = GameConstants.TEMPERATURE_TIME_THAW_MIN;
2570 }
2571
2573 if (deltaHeat < 0)
2574 coef = GameConstants.TEMP_COEF_COOLING_GLOBAL;
2575
2576 if (coef != 0)
2577 changeTimeDefault *= 1/coef;
2578
2579 changeTime = Math.Lerp(Math.Max(changeTimeDefault,changeTimeMin),changeTimeMin,data.
m_InterpolatedFraction);
2580 progressVal = progressVal + progressDelta / changeTime;
2581
2582 float remnantTemp = 0;
2584 {
2586 if (progressVal > 1.0)
2587 {
2589 remnantTemp = (progressVal - 1) * changeTime * GameConstants.TEMPERATURE_RATE_AVERAGE_ABS * -1;
2590 else
2591 remnantTemp = (((progressVal - 1) * changeTime) / progressDelta) * deltaHeat;
2592 }
2593 }
2595 {
2597 if (progressVal < 0.0)
2598 {
2600 remnantTemp = -progressVal * changeTime * GameConstants.TEMPERATURE_RATE_AVERAGE_ABS;
2601 else
2602 remnantTemp = ((-progressVal * changeTime) / progressDelta) * deltaHeat;
2603 }
2604 }
2605 else
2606 {
2608 progressVal = (progressDelta * GameConstants.TEMPERATURE_FREEZETHAW_ACCELERATION_COEF) / changeTime +
m_FreezeThawProgress;
2609
2611 }
2612
2613 if (remnantTemp >= GameConstants.TEMPERATURE_SENSITIVITY_THRESHOLD)
2615
2616 #ifdef DEVELOPER
2617 if (progressVal > 0 && progressVal < 1)
2618 {
2619 m_LastFTChangeTime = changeTime;
2621 m_PresumedTimeRemaining = (1 - progressVal) * changeTime;
2622 else
2623 m_PresumedTimeRemaining = progressVal * changeTime;
2624 }
2625 #endif
2626 }
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