@@ -0,0 +1,69 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user