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(); } } }