void OnThermalEvent(ThermalMetrics ev)
    {
        if (loop)
        {
            return;
        }

        switch (ev.WarningLevel)
        {
        case WarningLevel.NoWarning:
            break;

        case WarningLevel.ThrottlingImminent:
            ap.ThermalStatus.ThermalEvent -= OnThermalEvent;
            LogResult("ThrottlingImminent state reached");
            StartCoroutine(FinishAutoMode());
            break;

        case WarningLevel.Throttling:
            ap.ThermalStatus.ThermalEvent -= OnThermalEvent;
            LogResult("Throttling state reached");
            StartCoroutine(FinishAutoMode());
            break;
        }
    }
    void OnThermalEvent(ThermalMetrics ev)
    {
        switch (ev.WarningLevel)
        {
        case WarningLevel.NoWarning:
            objectFactory.LimitCount = originalLimitCount;
            break;

        case WarningLevel.ThrottlingImminent:
            objectFactory.LimitCount = originalLimitCount / 4;
            break;

        case WarningLevel.Throttling:
            objectFactory.LimitCount = originalLimitCount / 100;
            break;
        }
    }
    void OnThermalEvent(ThermalMetrics ev)
    {
        thermalWarning.text = ev.WarningLevel.ToString();
        switch (ev.WarningLevel)
        {
        case WarningLevel.NoWarning:
            thermalPanel.color = Color.green;
            break;

        case WarningLevel.ThrottlingImminent:
            thermalPanel.color = Color.magenta;
            break;

        case WarningLevel.Throttling:
            thermalPanel.color = Color.red;
            break;
        }
    }
    void OnThermalEvent(ThermalMetrics ev)
    {
        DisableAllThermalWarnings();
        switch (ev.WarningLevel)
        {
        case WarningLevel.NoWarning:
            Activate(NoWarning);
            break;

        case WarningLevel.ThrottlingImminent:
            Activate(ThrottlingImminent);
            break;

        case WarningLevel.Throttling:
            Activate(Throttling);
            break;
        }
    }
        public IEnumerator ThermalEvent_Works()
        {
            var subsystem = AdaptivePerformanceGeneralSettings.Instance.Manager.activeLoader.GetLoadedSubsystem <SimulatorAdaptivePerformanceSubsystem>();
            var ap        = Holder.Instance;
            var thermals  = ap.ThermalStatus;

            var metrics = new ThermalMetrics();
            ThermalEventHandler eventHandler = delegate(ThermalMetrics args)
            {
                metrics = args;
            };

            thermals.ThermalEvent += eventHandler;

            subsystem.TemperatureLevel = 0.3f;
            subsystem.TemperatureTrend = 0.5f;

            yield return(null);

            Assert.AreEqual(0.3f, metrics.TemperatureLevel, 0.0001f);
            Assert.AreEqual(0.5f, metrics.TemperatureTrend, 0.0001f);
        }