diff options
| author | dereelatwit <54997325+dereelatwit@users.noreply.github.com> | 2023-08-03 14:05:08 -0400 |
|---|---|---|
| committer | dereelatwit <54997325+dereelatwit@users.noreply.github.com> | 2023-08-03 14:05:08 -0400 |
| commit | b8aa2e0935f309b112648f0352f35f5f33da946b (patch) | |
| tree | 9121ae1a65e483dddba8367cbbdd4991abfb3e26 /Pathfinding Visualizer/Assets/TextMesh Pro/Examples & Extras/Scripts/TMP_UiFrameRateCounter.cs | |
| parent | 374125ba34e0366afb062578906877cfdf229bb9 (diff) | |
started implementing UI
Diffstat (limited to 'Pathfinding Visualizer/Assets/TextMesh Pro/Examples & Extras/Scripts/TMP_UiFrameRateCounter.cs')
| -rw-r--r-- | Pathfinding Visualizer/Assets/TextMesh Pro/Examples & Extras/Scripts/TMP_UiFrameRateCounter.cs | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/Pathfinding Visualizer/Assets/TextMesh Pro/Examples & Extras/Scripts/TMP_UiFrameRateCounter.cs b/Pathfinding Visualizer/Assets/TextMesh Pro/Examples & Extras/Scripts/TMP_UiFrameRateCounter.cs new file mode 100644 index 0000000..586e8be --- /dev/null +++ b/Pathfinding Visualizer/Assets/TextMesh Pro/Examples & Extras/Scripts/TMP_UiFrameRateCounter.cs @@ -0,0 +1,125 @@ +using UnityEngine; +using System.Collections; + + +namespace TMPro.Examples +{ + + public class TMP_UiFrameRateCounter : MonoBehaviour + { + public float UpdateInterval = 5.0f; + private float m_LastInterval = 0; + private int m_Frames = 0; + + public enum FpsCounterAnchorPositions { TopLeft, BottomLeft, TopRight, BottomRight }; + + public FpsCounterAnchorPositions AnchorPosition = FpsCounterAnchorPositions.TopRight; + + private string htmlColorTag; + private const string fpsLabel = "{0:2}</color> <#8080ff>FPS \n<#FF8000>{1:2} <#8080ff>MS"; + + private TextMeshProUGUI m_TextMeshPro; + private RectTransform m_frameCounter_transform; + + private FpsCounterAnchorPositions last_AnchorPosition; + + void Awake() + { + if (!enabled) + return; + + Application.targetFrameRate = 1000; + + GameObject frameCounter = new GameObject("Frame Counter"); + m_frameCounter_transform = frameCounter.AddComponent<RectTransform>(); + + m_frameCounter_transform.SetParent(this.transform, false); + + m_TextMeshPro = frameCounter.AddComponent<TextMeshProUGUI>(); + m_TextMeshPro.font = Resources.Load<TMP_FontAsset>("Fonts & Materials/LiberationSans SDF"); + m_TextMeshPro.fontSharedMaterial = Resources.Load<Material>("Fonts & Materials/LiberationSans SDF - Overlay"); + + m_TextMeshPro.enableWordWrapping = false; + m_TextMeshPro.fontSize = 36; + + m_TextMeshPro.isOverlay = true; + + Set_FrameCounter_Position(AnchorPosition); + last_AnchorPosition = AnchorPosition; + } + + + void Start() + { + m_LastInterval = Time.realtimeSinceStartup; + m_Frames = 0; + } + + + void Update() + { + if (AnchorPosition != last_AnchorPosition) + Set_FrameCounter_Position(AnchorPosition); + + last_AnchorPosition = AnchorPosition; + + m_Frames += 1; + float timeNow = Time.realtimeSinceStartup; + + if (timeNow > m_LastInterval + UpdateInterval) + { + // display two fractional digits (f2 format) + float fps = m_Frames / (timeNow - m_LastInterval); + float ms = 1000.0f / Mathf.Max(fps, 0.00001f); + + if (fps < 30) + htmlColorTag = "<color=yellow>"; + else if (fps < 10) + htmlColorTag = "<color=red>"; + else + htmlColorTag = "<color=green>"; + + m_TextMeshPro.SetText(htmlColorTag + fpsLabel, fps, ms); + + m_Frames = 0; + m_LastInterval = timeNow; + } + } + + + void Set_FrameCounter_Position(FpsCounterAnchorPositions anchor_position) + { + switch (anchor_position) + { + case FpsCounterAnchorPositions.TopLeft: + m_TextMeshPro.alignment = TextAlignmentOptions.TopLeft; + m_frameCounter_transform.pivot = new Vector2(0, 1); + m_frameCounter_transform.anchorMin = new Vector2(0.01f, 0.99f); + m_frameCounter_transform.anchorMax = new Vector2(0.01f, 0.99f); + m_frameCounter_transform.anchoredPosition = new Vector2(0, 1); + break; + case FpsCounterAnchorPositions.BottomLeft: + m_TextMeshPro.alignment = TextAlignmentOptions.BottomLeft; + m_frameCounter_transform.pivot = new Vector2(0, 0); + m_frameCounter_transform.anchorMin = new Vector2(0.01f, 0.01f); + m_frameCounter_transform.anchorMax = new Vector2(0.01f, 0.01f); + m_frameCounter_transform.anchoredPosition = new Vector2(0, 0); + break; + case FpsCounterAnchorPositions.TopRight: + m_TextMeshPro.alignment = TextAlignmentOptions.TopRight; + m_frameCounter_transform.pivot = new Vector2(1, 1); + m_frameCounter_transform.anchorMin = new Vector2(0.99f, 0.99f); + m_frameCounter_transform.anchorMax = new Vector2(0.99f, 0.99f); + m_frameCounter_transform.anchoredPosition = new Vector2(1, 1); + break; + case FpsCounterAnchorPositions.BottomRight: + m_TextMeshPro.alignment = TextAlignmentOptions.BottomRight; + m_frameCounter_transform.pivot = new Vector2(1, 0); + m_frameCounter_transform.anchorMin = new Vector2(0.99f, 0.01f); + m_frameCounter_transform.anchorMax = new Vector2(0.99f, 0.01f); + m_frameCounter_transform.anchoredPosition = new Vector2(1, 0); + break; + } + } + } +}
\ No newline at end of file |
