67 lines
1.5 KiB
C#
67 lines
1.5 KiB
C#
using System;
|
|
using SRF;
|
|
using UnityEngine;
|
|
using UnityEngine.Profiling;
|
|
using UnityEngine.UI;
|
|
|
|
namespace SRDebugger.UI.Controls.Profiler
|
|
{
|
|
public class ProfilerMonoBlock : SRMonoBehaviourEx
|
|
{
|
|
private float _lastRefresh;
|
|
|
|
[RequiredField]
|
|
public Text CurrentUsedText;
|
|
|
|
[RequiredField]
|
|
public GameObject NotSupportedMessage;
|
|
|
|
[RequiredField]
|
|
public Slider Slider;
|
|
|
|
[RequiredField]
|
|
public Text TotalAllocatedText;
|
|
|
|
protected override void OnEnable()
|
|
{
|
|
base.OnEnable();
|
|
NotSupportedMessage.SetActive(!UnityEngine.Profiling.Profiler.supported);
|
|
CurrentUsedText.gameObject.SetActive(UnityEngine.Profiling.Profiler.supported);
|
|
TriggerRefresh();
|
|
}
|
|
|
|
protected override void Update()
|
|
{
|
|
base.Update();
|
|
if (SRDebug.Instance.IsDebugPanelVisible && Time.realtimeSinceStartup - _lastRefresh > 1f)
|
|
{
|
|
TriggerRefresh();
|
|
_lastRefresh = Time.realtimeSinceStartup;
|
|
}
|
|
}
|
|
|
|
public void TriggerRefresh()
|
|
{
|
|
long num = ((!UnityEngine.Profiling.Profiler.supported) ? GC.GetTotalMemory(false) : UnityEngine.Profiling.Profiler.GetMonoHeapSize());
|
|
uint monoUsedSize = UnityEngine.Profiling.Profiler.GetMonoUsedSize();
|
|
Slider.maxValue = num;
|
|
Slider.value = monoUsedSize;
|
|
long num2 = num >> 10;
|
|
num2 /= 1024;
|
|
uint num3 = monoUsedSize >> 10;
|
|
num3 /= 1024;
|
|
TotalAllocatedText.text = "Total: <color=#FFFFFF>{0}</color>MB".Fmt(num2);
|
|
if (num3 != 0)
|
|
{
|
|
CurrentUsedText.text = "<color=#FFFFFF>{0}</color>MB".Fmt(num3);
|
|
}
|
|
}
|
|
|
|
public void TriggerCollection()
|
|
{
|
|
GC.Collect();
|
|
TriggerRefresh();
|
|
}
|
|
}
|
|
}
|