TotalElapsedTime.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. /**
  2. * Copyright(c) Live2D Inc. All rights reserved.
  3. *
  4. * Use of this source code is governed by the Live2D Open Software license
  5. * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
  6. */
  7. using System;
  8. using UnityEngine;
  9. using UnityEngine.UI;
  10. namespace Live2D.Cubism.Samples.AsyncBenchmark
  11. {
  12. public class TotalElapsedTime : MonoBehaviour
  13. {
  14. /// <summary>
  15. /// Interval time before the model can spawn.
  16. /// </summary>
  17. public readonly int UpdateInterval = 1;
  18. /// <summary>
  19. /// Total benchmark uptime.
  20. /// </summary>
  21. [SerializeField, HideInInspector]
  22. public int ElapsedTime = 0;
  23. /// <summary>
  24. /// Add delta time.
  25. /// </summary>
  26. private float UpdateIntervalCount { get; set; }
  27. /// <summary>
  28. /// UI to display total benchmark uptime.
  29. /// </summary>
  30. private Text TotalElapsedTimeText { get; set; }
  31. /// <summary>
  32. /// <see cref="AsyncBenchmark.FrameRateUiHolder"/> Component.
  33. /// </summary>
  34. private FrameRateUiHolder FrameRateUiHolder { get; set; }
  35. /// <summary>
  36. /// Called by Unity. Getting FpsObservation Component and Getting Component from FpsObservation.
  37. /// </summary>
  38. private void Start()
  39. {
  40. FrameRateUiHolder = GetComponent<FrameRateUiHolder>();
  41. TotalElapsedTimeText = FrameRateUiHolder.ElapsedTimeUi;
  42. }
  43. /// <summary>
  44. /// Called by Unity. Update Total Operating Time.
  45. /// </summary>
  46. private void Update()
  47. {
  48. // Whether you have time to make a decision.
  49. if (UpdateIntervalCount < UpdateInterval)
  50. {
  51. UpdateIntervalCount += Time.deltaTime;
  52. return;
  53. }
  54. // Update total benchmark uptime.
  55. ElapsedTime += UpdateInterval;
  56. if (TotalElapsedTimeText != null)
  57. {
  58. TotalElapsedTimeText.text = TimeConversion(ElapsedTime);
  59. }
  60. // Reset variable.
  61. UpdateIntervalCount = 0.0f;
  62. }
  63. /// <summary>
  64. /// Convert seconds to "hours:minutes:seconds".
  65. /// </summary>
  66. /// <param name="second">Number of seconds it conversion source.</param>
  67. /// <returns>String type converted to "hours:minutes:seconds" notation.</returns>
  68. private string TimeConversion(int second)
  69. {
  70. // Generate TimeSpan structure type.
  71. var timeSpan = new TimeSpan(0, 0, second);
  72. return timeSpan.ToString();
  73. }
  74. }
  75. }