using Unity.Jobs;
namespace Pathfinding.Util {
public interface IProgress {
float Progress { get; }
}
///
/// A promise that T is being calculated asynchronously.
///
/// The result can be accessed by calling . This will block until the calculation is complete.
///
public struct Promise: IProgress, System.IDisposable where T : IProgress, System.IDisposable {
public JobHandle handle;
T result;
public Promise(JobHandle handle, T result) {
this.handle = handle;
this.result = result;
}
public bool IsCompleted {
get {
return handle.IsCompleted;
}
}
public float Progress {
get {
return result.Progress;
}
}
public T GetValue () {
return result;
}
public T Complete () {
handle.Complete();
return result;
}
public void Dispose () {
Complete();
result.Dispose();
}
}
}