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/TextMeshProFloatingText.cs | |
| parent | 374125ba34e0366afb062578906877cfdf229bb9 (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.cs | 223 |
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()); + } + } +} |
