summaryrefslogtreecommitdiff
path: root/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/Promise.cs
diff options
context:
space:
mode:
authorchai <215380520@qq.com>2024-05-23 10:08:29 +0800
committerchai <215380520@qq.com>2024-05-23 10:08:29 +0800
commit8722a9920c1f6119bf6e769cba270e63097f8e25 (patch)
tree2eaf9865de7fb1404546de4a4296553d8f68cc3b /Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/Promise.cs
parent3ba4020b69e5971bb0df7ee08b31d10ea4d01937 (diff)
+ astar project
Diffstat (limited to 'Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/Promise.cs')
-rw-r--r--Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/Promise.cs48
1 files changed, 48 insertions, 0 deletions
diff --git a/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/Promise.cs b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/Promise.cs
new file mode 100644
index 0000000..9cfc0e4
--- /dev/null
+++ b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/Promise.cs
@@ -0,0 +1,48 @@
+using Unity.Jobs;
+
+namespace Pathfinding.Util {
+ public interface IProgress {
+ float Progress { get; }
+ }
+
+ /// <summary>
+ /// A promise that T is being calculated asynchronously.
+ ///
+ /// The result can be accessed by calling <see cref="Complete"/>. This will block until the calculation is complete.
+ /// </summary>
+ public struct Promise<T>: 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();
+ }
+ }
+}