forked from readyplayerme/rpm-unity-sdk-core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRuntimeDebugPanel.cs
71 lines (61 loc) · 1.91 KB
/
RuntimeDebugPanel.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
using UnityEngine;
using UnityEngine.UI;
namespace ReadyPlayerMe.Core
{
public class RuntimeDebugPanel : MonoBehaviour
{
private bool showDebugPanel = true;
private bool pauseLogOutput;
private Text logTextUI;
private ScrollRect logScrollRect;
private string currentLogOutput = "<color=green>Log Output Started...</color>\n";
private int logCount;
private readonly int maxLogs = 200;
public void ToggleShowDebugPanel()
{
showDebugPanel = !showDebugPanel;
}
public void TogglePauseLogOutput()
{
pauseLogOutput = !pauseLogOutput;
}
private void Awake()
{
InitialiseDebugPanel();
Application.logMessageReceived += HandleLog;
}
private void OnDisable()
{
Application.logMessageReceived -= HandleLog;
}
private void InitialiseDebugPanel()
{
logScrollRect = GetComponentInChildren<ScrollRect>(true);
logTextUI = GetComponentInChildren<Text>(true);
UpdateDebugPanel();
}
private void UpdateDebugPanel()
{
if (logTextUI) logTextUI.text = currentLogOutput;
logCount++;
ScrollToBottom();
}
private void HandleLog(string logString, string stackTrace, LogType type)
{
if (logCount <= maxLogs)
{
currentLogOutput += $"{logString}\n";
}
else
{
currentLogOutput = "<color=yellow>Maximum number of logs reached. Logging Reset.</color>\n";
logCount = 0;
}
if (showDebugPanel && !pauseLogOutput) UpdateDebugPanel();
}
private void ScrollToBottom()
{
if (logScrollRect) logScrollRect.verticalNormalizedPosition = 0f;
}
}
}