< Summary

Class:AutoQualityUncappedFPSController
Assembly:SettingsControllers
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/Settings/SettingsControllers/AutoQualityUncappedFPSController.cs
Covered lines:21
Uncovered lines:1
Coverable lines:22
Total lines:54
Line coverage:95.4% (21 of 22)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
AutoQualityUncappedFPSController(...)0%110100%
EvaluateQuality(...)0%6.016093.75%
ResetEvaluation()0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/Settings/SettingsControllers/AutoQualityUncappedFPSController.cs

#LineLine coverage
 1using System.Collections.Generic;
 2using System.Linq;
 3using DCL;
 4using DCL.FPSDisplay;
 5using DCL.SettingsData;
 6using UnityEngine;
 7
 8/// <summary>
 9/// An implementation of an AutoQualityController for uncapped FPS
 10/// </summary>
 11public class AutoQualityUncappedFPSController : IAutoQualityController
 12{
 13    private const int EVALUATIONS_SIZE = 5;
 14
 15    internal int currentQualityIndex;
 16    internal readonly QualitySettingsData qualitySettings;
 17
 22218    internal readonly List<float> fpsEvaluations = new List<float>();
 19
 22220    public AutoQualityUncappedFPSController(int startIndex, QualitySettingsData qualitySettings)
 21    {
 22222        currentQualityIndex = startIndex;
 22223        this.qualitySettings = qualitySettings;
 22224    }
 25
 26    public int EvaluateQuality(PerformanceMetricsData metrics)
 27    {
 928        if (metrics == null)
 029            return currentQualityIndex;
 30
 31        //TODO refine this evaluation
 932        fpsEvaluations.Add(metrics.fpsCount);
 933        if (fpsEvaluations.Count <= EVALUATIONS_SIZE)
 534            return currentQualityIndex;
 35
 436        fpsEvaluations.RemoveAt(0);
 437        float average = fpsEvaluations.Average();
 38
 439        int newCurrentQualityIndex = currentQualityIndex;
 440        if (average <= FPSEvaluation.WORSE)
 241            newCurrentQualityIndex = Mathf.Max(0, currentQualityIndex - 1);
 42
 443        if (average >= FPSEvaluation.GREAT)
 144            newCurrentQualityIndex = Mathf.Min(qualitySettings.Length - 1, currentQualityIndex + 1);
 45
 446        if (newCurrentQualityIndex != currentQualityIndex)
 347            ResetEvaluation();
 48
 449        currentQualityIndex = newCurrentQualityIndex;
 450        return currentQualityIndex;
 51    }
 52
 18853    public void ResetEvaluation() { fpsEvaluations.Clear(); }
 54}