using System;
using UnityEditor;
namespace Unity.PlasticSCM.Editor.Toolbar.PopupWindow.BranchesList
{
internal class PopupupProgressBar
{
internal PopupupProgressBar(
Action repaint,
float cycleDurationSeconds = 1.5f)
{
mRepaint = repaint;
mCycleDurationSeconds = cycleDurationSeconds;
}
internal bool IsVisible { get; set; }
internal float Progress
{
get { return mProgress; }
}
internal void Reset()
{
mProgressBarLastTime = 0;
mProgressBarAccumulatedTime = 0;
mProgress = 0;
}
internal void OnEditorApplicationUpdate()
{
if (!IsVisible)
return;
double currentTime = EditorApplication.timeSinceStartup;
double deltaTime = currentTime - mProgressBarLastTime;
mProgressBarLastTime = currentTime;
mProgressBarAccumulatedTime += deltaTime;
mProgress = (float)(mProgressBarAccumulatedTime % mCycleDurationSeconds) / mCycleDurationSeconds;
mRepaint();
}
readonly Action mRepaint;
readonly float mCycleDurationSeconds;
double mProgressBarLastTime = 0f;
double mProgressBarAccumulatedTime = 0f;
float mProgress = 0f;
}
}