summaryrefslogtreecommitdiff
path: root/Pathfinding Visualizer/Assets/TextMesh Pro/Examples & Extras/Scripts/TextMeshProFloatingText.cs
diff options
context:
space:
mode:
authordereelatwit <54997325+dereelatwit@users.noreply.github.com>2023-08-03 14:05:08 -0400
committerdereelatwit <54997325+dereelatwit@users.noreply.github.com>2023-08-03 14:05:08 -0400
commitb8aa2e0935f309b112648f0352f35f5f33da946b (patch)
tree9121ae1a65e483dddba8367cbbdd4991abfb3e26 /Pathfinding Visualizer/Assets/TextMesh Pro/Examples & Extras/Scripts/TextMeshProFloatingText.cs
parent374125ba34e0366afb062578906877cfdf229bb9 (diff)
started implementing UI
Diffstat (limited to 'Pathfinding Visualizer/Assets/TextMesh Pro/Examples & Extras/Scripts/TextMeshProFloatingText.cs')
-rw-r--r--Pathfinding Visualizer/Assets/TextMesh Pro/Examples & Extras/Scripts/TextMeshProFloatingText.cs223
1 files changed, 223 insertions, 0 deletions
diff --git a/Pathfinding Visualizer/Assets/TextMesh Pro/Examples & Extras/Scripts/TextMeshProFloatingText.cs b/Pathfinding Visualizer/Assets/TextMesh Pro/Examples & Extras/Scripts/TextMeshProFloatingText.cs
new file mode 100644
index 0000000..f961113
--- /dev/null
+++ b/Pathfinding Visualizer/Assets/TextMesh Pro/Examples & Extras/Scripts/TextMeshProFloatingText.cs
@@ -0,0 +1,223 @@
+using UnityEngine;
+using System.Collections;
+
+
+namespace TMPro.Examples
+{
+
+ public class TextMeshProFloatingText : MonoBehaviour
+ {
+ public Font TheFont;
+
+ private GameObject m_floatingText;
+ private TextMeshPro m_textMeshPro;
+ private TextMesh m_textMesh;
+
+ private Transform m_transform;
+ private Transform m_floatingText_Transform;
+ private Transform m_cameraTransform;
+
+ Vector3 lastPOS = Vector3.zero;
+ Quaternion lastRotation = Quaternion.identity;
+
+ public int SpawnType;
+ public bool IsTextObjectScaleStatic;
+
+ //private int m_frame = 0;
+
+ static WaitForEndOfFrame k_WaitForEndOfFrame = new WaitForEndOfFrame();
+ static WaitForSeconds[] k_WaitForSecondsRandom = new WaitForSeconds[]
+ {
+ new WaitForSeconds(0.05f), new WaitForSeconds(0.1f), new WaitForSeconds(0.15f), new WaitForSeconds(0.2f), new WaitForSeconds(0.25f),
+ new WaitForSeconds(0.3f), new WaitForSeconds(0.35f), new WaitForSeconds(0.4f), new WaitForSeconds(0.45f), new WaitForSeconds(0.5f),
+ new WaitForSeconds(0.55f), new WaitForSeconds(0.6f), new WaitForSeconds(0.65f), new WaitForSeconds(0.7f), new WaitForSeconds(0.75f),
+ new WaitForSeconds(0.8f), new WaitForSeconds(0.85f), new WaitForSeconds(0.9f), new WaitForSeconds(0.95f), new WaitForSeconds(1.0f),
+ };
+
+ void Awake()
+ {
+ m_transform = transform;
+ m_floatingText = new GameObject(this.name + " floating text");
+
+ // Reference to Transform is lost when TMP component is added since it replaces it by a RectTransform.
+ //m_floatingText_Transform = m_floatingText.transform;
+ //m_floatingText_Transform.position = m_transform.position + new Vector3(0, 15f, 0);
+
+ m_cameraTransform = Camera.main.transform;
+ }
+
+ void Start()
+ {
+ if (SpawnType == 0)
+ {
+ // TextMesh Pro Implementation
+ m_textMeshPro = m_floatingText.AddComponent<TextMeshPro>();
+ m_textMeshPro.rectTransform.sizeDelta = new Vector2(3, 3);
+
+ m_floatingText_Transform = m_floatingText.transform;
+ m_floatingText_Transform.position = m_transform.position + new Vector3(0, 15f, 0);
+
+ //m_textMeshPro.fontAsset = Resources.Load("Fonts & Materials/JOKERMAN SDF", typeof(TextMeshProFont)) as TextMeshProFont; // User should only provide a string to the resource.
+ //m_textMeshPro.fontSharedMaterial = Resources.Load("Fonts & Materials/LiberationSans SDF", typeof(Material)) as Material;
+
+ m_textMeshPro.alignment = TextAlignmentOptions.Center;
+ m_textMeshPro.color = new Color32((byte)Random.Range(0, 255), (byte)Random.Range(0, 255), (byte)Random.Range(0, 255), 255);
+ m_textMeshPro.fontSize = 24;
+ //m_textMeshPro.enableExtraPadding = true;
+ //m_textMeshPro.enableShadows = false;
+ m_textMeshPro.enableKerning = false;
+ m_textMeshPro.text = string.Empty;
+ m_textMeshPro.isTextObjectScaleStatic = IsTextObjectScaleStatic;
+
+ StartCoroutine(DisplayTextMeshProFloatingText());
+ }
+ else if (SpawnType == 1)
+ {
+ //Debug.Log("Spawning TextMesh Objects.");
+
+ m_floatingText_Transform = m_floatingText.transform;
+ m_floatingText_Transform.position = m_transform.position + new Vector3(0, 15f, 0);
+
+ m_textMesh = m_floatingText.AddComponent<TextMesh>();
+ m_textMesh.font = Resources.Load<Font>("Fonts/ARIAL");
+ m_textMesh.GetComponent<Renderer>().sharedMaterial = m_textMesh.font.material;
+ m_textMesh.color = new Color32((byte)Random.Range(0, 255), (byte)Random.Range(0, 255), (byte)Random.Range(0, 255), 255);
+ m_textMesh.anchor = TextAnchor.LowerCenter;
+ m_textMesh.fontSize = 24;
+
+ StartCoroutine(DisplayTextMeshFloatingText());
+ }
+ else if (SpawnType == 2)
+ {
+
+ }
+
+ }
+
+
+ //void Update()
+ //{
+ // if (SpawnType == 0)
+ // {
+ // m_textMeshPro.SetText("{0}", m_frame);
+ // }
+ // else
+ // {
+ // m_textMesh.text = m_frame.ToString();
+ // }
+ // m_frame = (m_frame + 1) % 1000;
+
+ //}
+
+
+ public IEnumerator DisplayTextMeshProFloatingText()
+ {
+ float CountDuration = 2.0f; // How long is the countdown alive.
+ float starting_Count = Random.Range(5f, 20f); // At what number is the counter starting at.
+ float current_Count = starting_Count;
+
+ Vector3 start_pos = m_floatingText_Transform.position;
+ Color32 start_color = m_textMeshPro.color;
+ float alpha = 255;
+ int int_counter = 0;
+
+
+ float fadeDuration = 3 / starting_Count * CountDuration;
+
+ while (current_Count > 0)
+ {
+ current_Count -= (Time.deltaTime / CountDuration) * starting_Count;
+
+ if (current_Count <= 3)
+ {
+ //Debug.Log("Fading Counter ... " + current_Count.ToString("f2"));
+ alpha = Mathf.Clamp(alpha - (Time.deltaTime / fadeDuration) * 255, 0, 255);
+ }
+
+ int_counter = (int)current_Count;
+ m_textMeshPro.text = int_counter.ToString();
+ //m_textMeshPro.SetText("{0}", (int)current_Count);
+
+ m_textMeshPro.color = new Color32(start_color.r, start_color.g, start_color.b, (byte)alpha);
+
+ // Move the floating text upward each update
+ m_floatingText_Transform.position += new Vector3(0, starting_Count * Time.deltaTime, 0);
+
+ // Align floating text perpendicular to Camera.
+ if (!lastPOS.Compare(m_cameraTransform.position, 1000) || !lastRotation.Compare(m_cameraTransform.rotation, 1000))
+ {
+ lastPOS = m_cameraTransform.position;
+ lastRotation = m_cameraTransform.rotation;
+ m_floatingText_Transform.rotation = lastRotation;
+ Vector3 dir = m_transform.position - lastPOS;
+ m_transform.forward = new Vector3(dir.x, 0, dir.z);
+ }
+
+ yield return k_WaitForEndOfFrame;
+ }
+
+ //Debug.Log("Done Counting down.");
+
+ yield return k_WaitForSecondsRandom[Random.Range(0, 19)];
+
+ m_floatingText_Transform.position = start_pos;
+
+ StartCoroutine(DisplayTextMeshProFloatingText());
+ }
+
+
+ public IEnumerator DisplayTextMeshFloatingText()
+ {
+ float CountDuration = 2.0f; // How long is the countdown alive.
+ float starting_Count = Random.Range(5f, 20f); // At what number is the counter starting at.
+ float current_Count = starting_Count;
+
+ Vector3 start_pos = m_floatingText_Transform.position;
+ Color32 start_color = m_textMesh.color;
+ float alpha = 255;
+ int int_counter = 0;
+
+ float fadeDuration = 3 / starting_Count * CountDuration;
+
+ while (current_Count > 0)
+ {
+ current_Count -= (Time.deltaTime / CountDuration) * starting_Count;
+
+ if (current_Count <= 3)
+ {
+ //Debug.Log("Fading Counter ... " + current_Count.ToString("f2"));
+ alpha = Mathf.Clamp(alpha - (Time.deltaTime / fadeDuration) * 255, 0, 255);
+ }
+
+ int_counter = (int)current_Count;
+ m_textMesh.text = int_counter.ToString();
+ //Debug.Log("Current Count:" + current_Count.ToString("f2"));
+
+ m_textMesh.color = new Color32(start_color.r, start_color.g, start_color.b, (byte)alpha);
+
+ // Move the floating text upward each update
+ m_floatingText_Transform.position += new Vector3(0, starting_Count * Time.deltaTime, 0);
+
+ // Align floating text perpendicular to Camera.
+ if (!lastPOS.Compare(m_cameraTransform.position, 1000) || !lastRotation.Compare(m_cameraTransform.rotation, 1000))
+ {
+ lastPOS = m_cameraTransform.position;
+ lastRotation = m_cameraTransform.rotation;
+ m_floatingText_Transform.rotation = lastRotation;
+ Vector3 dir = m_transform.position - lastPOS;
+ m_transform.forward = new Vector3(dir.x, 0, dir.z);
+ }
+
+ yield return k_WaitForEndOfFrame;
+ }
+
+ //Debug.Log("Done Counting down.");
+
+ yield return k_WaitForSecondsRandom[Random.Range(0, 20)];
+
+ m_floatingText_Transform.position = start_pos;
+
+ StartCoroutine(DisplayTextMeshFloatingText());
+ }
+ }
+}