123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- using UnityEngine;
- #if UNITY_2019_1_OR_NEWER
- using UnityEngine.UIElements;
- #else
- using UnityEngine.Experimental.UIElements;
- #endif
- namespace UnityEditor.Collaboration
- {
- internal class HistoryProgressSpinner : Image
- {
- private readonly Texture2D[] m_StatusWheelTextures;
- private bool m_ProgressEnabled;
- private IVisualElementScheduledItem m_Animation;
- public bool ProgressEnabled
- {
- set
- {
- if (m_ProgressEnabled == value)
- return;
- m_ProgressEnabled = value;
- visible = value;
- if (value)
- {
- if (m_Animation == null)
- {
- m_Animation = this.schedule.Execute(AnimateProgress).Every(33);
- }
- else
- {
- m_Animation.Resume();
- }
- }
- else
- {
- if (m_Animation != null)
- {
- m_Animation.Pause();
- }
- }
- }
- }
- public HistoryProgressSpinner()
- {
- m_StatusWheelTextures = new Texture2D[12];
- for (int i = 0; i < 12; i++)
- {
- m_StatusWheelTextures[i] = EditorGUIUtility.LoadIcon("WaitSpin" + i.ToString("00"));
- }
- image = m_StatusWheelTextures[0];
- style.width = m_StatusWheelTextures[0].width;
- style.height = m_StatusWheelTextures[0].height;
- visible = false;
- }
- private void AnimateProgress(TimerState obj)
- {
- int frame = (int)Mathf.Repeat(Time.realtimeSinceStartup * 10, 11.99f);
- image = m_StatusWheelTextures[frame];
- MarkDirtyRepaint();
- }
- }
- }
|