Repository URL to install this package:
Version:
1.3.1 ▾
|
using System;
using System.Threading.Tasks;
using UnityEditor.PackageManager;
using UnityEditor.PackageManager.Requests;
namespace Fluctio.FluctioSim.EditorUtils.EditorGeneral
{
public static class PackageManagerExtensions
{
public static Task<T> WaitAsync<T>(this Request<T> request)
{
var completionSource = new TaskCompletionSource<T>();
EditorUpdateEvents.UpdateUntil += () =>
{
switch (request.Status)
{
case StatusCode.InProgress:
return false;
case StatusCode.Success:
completionSource.SetResult(request.Result);
break;
case StatusCode.Failure:
completionSource.SetException(new PackageManagerException(request.Error));
break;
default:
throw new ArgumentOutOfRangeException();
}
return true;
};
return completionSource.Task;
}
}
[Serializable]
public class PackageManagerException : Exception
{
internal PackageManagerException (Error error) : base(error.message) {}
}
}