| | 1 | | using System; |
| | 2 | | using System.Collections.Generic; |
| | 3 | | using DCL; |
| | 4 | | using DCL.FPSDisplay; |
| | 5 | | using UnityEngine; |
| | 6 | |
|
| | 7 | | public class FPSDebugMetricModule : IDebugMetricModule |
| | 8 | | { |
| | 9 | |
|
| | 10 | | private const string NO_DECIMALS = "##"; |
| | 11 | | private const string TWO_DECIMALS = "##.00"; |
| | 12 | | private float fps; |
| | 13 | | private string fpsColor; |
| | 14 | | private PerformanceMetricsDataVariable performanceData; |
| | 15 | |
|
| 0 | 16 | | public FPSDebugMetricModule(PerformanceMetricsDataVariable performanceData) |
| | 17 | | { |
| 0 | 18 | | this.performanceData = performanceData; |
| 0 | 19 | | } |
| | 20 | |
|
| | 21 | | public void SetUpModule(Dictionary<DebugValueEnum, Func<string>> updateValueDictionary) |
| | 22 | | { |
| 0 | 23 | | updateValueDictionary.Add(DebugValueEnum.FPS, GetFPSCount); |
| 0 | 24 | | updateValueDictionary.Add(DebugValueEnum.FPS_HiccupsInTheLast1000, () => $"{fpsColor}{performanceData.Get().hicc |
| 0 | 25 | | updateValueDictionary.Add(DebugValueEnum.FPS_HiccupsLoss, GetHiccupsLoss); |
| 0 | 26 | | updateValueDictionary.Add(DebugValueEnum.FPS_BadFramesPercentiles, () => $"{fpsColor}{((performanceData.Get().hi |
| 0 | 27 | | } |
| | 28 | | public void UpdateModule() |
| | 29 | | { |
| 0 | 30 | | fps = performanceData.Get().fpsCount; |
| 0 | 31 | | fpsColor = FPSColoring.GetDisplayColorString(fps); |
| 0 | 32 | | } |
| 0 | 33 | | public void EnableModule() { } |
| 0 | 34 | | public void DisableModule() { } |
| | 35 | |
|
| | 36 | | private string GetFPSCount() |
| | 37 | | { |
| 0 | 38 | | float dt = Time.unscaledDeltaTime; |
| 0 | 39 | | string fpsFormatted = fps.ToString("##"); |
| 0 | 40 | | string msFormatted = (dt * 1000).ToString("##"); |
| 0 | 41 | | return $"<b>FPS</b> {fpsColor}{fpsFormatted}</color> {msFormatted} ms"; |
| | 42 | | } |
| | 43 | |
|
| | 44 | | private string GetHiccupsLoss() |
| | 45 | | { |
| 0 | 46 | | return $"{fpsColor}{(100.0f * performanceData.Get().hiccupSum / performanceData.Get().totalSeconds).ToString(TWO |
| | 47 | | } |
| | 48 | |
|
| 0 | 49 | | public void Dispose() { } |
| | 50 | | } |