Skip to content

Commit 4c9c213

Browse files
authored
Merge pull request #26 from IvanMurzak/feature/better-future
feature/better-Future<T>
2 parents b8d3f48 + 76a3759 commit 4c9c213

File tree

189 files changed

+6839
-3253
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

189 files changed

+6839
-3253
lines changed

.vscode/settings.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,13 @@
5656
"ARGB",
5757
"cysharp",
5858
"editmode",
59+
"Finalizers",
5960
"imageloader",
6061
"Murzak",
6162
"openupm",
6263
"ugui",
63-
"unitask"
64+
"unitask",
65+
"WEBGL"
6466
],
6567
"dotnet.defaultSolution": "Unity-ImageLoader.sln"
6668
}

Assets/_PackageRoot/Documentation~/README.md

Lines changed: 458 additions & 200 deletions
Large diffs are not rendered by default.
2.74 KB
Loading

Assets/_PackageRoot/Editor/Gizmos/icon-cancel.png.meta

Lines changed: 140 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/_PackageRoot/README.md

Lines changed: 458 additions & 200 deletions
Large diffs are not rendered by default.

Assets/_PackageRoot/Runtime/Future/CancelComponent/ComponentCancelOn.cs

Lines changed: 0 additions & 26 deletions
This file was deleted.
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
using System;
2+
using UnityEngine;
3+
4+
namespace Extensions.Unity.ImageLoader
5+
{
6+
public abstract class ComponentTrigger : MonoBehaviour
7+
{
8+
// protected WeakAction onTrigger = new WeakAction();
9+
protected event Action onTrigger;
10+
protected bool isTriggered;
11+
12+
protected void Trigger()
13+
{
14+
isTriggered = true;
15+
onTrigger?.Invoke();
16+
onTrigger = null;
17+
}
18+
public void RegisterCancel<T>(IFuture<T> future)
19+
{
20+
if (future.Status == FutureStatus.Disposed || future.IsCompleted)
21+
return; // ignore completed futures
22+
23+
if (isTriggered)
24+
{
25+
future.Cancel();
26+
return;
27+
}
28+
29+
// TODO: check if future is completed during the onTrigger event
30+
// onTrigger += future.Cancel;
31+
// -------------------------------------------------------------
32+
var weakFuture = new WeakReference<IFuture<T>>(future);
33+
onTrigger += () =>
34+
{
35+
if (weakFuture.TryGetTarget(out var target))
36+
{
37+
if (future.Status == FutureStatus.Disposed || target.IsCompleted)
38+
return; // ignore completed futures
39+
40+
target.Cancel();
41+
}
42+
};
43+
}
44+
45+
public void RegisterDispose<T>(Reference<T> reference)
46+
{
47+
if (reference.IsDisposed)
48+
return; // ignore disposed references
49+
50+
if (isTriggered)
51+
{
52+
reference.Dispose();
53+
return;
54+
}
55+
56+
// TODO: check if reference is disposed during the onTrigger event
57+
// onTrigger += reference.Dispose;
58+
// -------------------------------------------------------------
59+
var weakReference = new WeakReference<Reference<T>>(reference);
60+
onTrigger += () =>
61+
{
62+
if (weakReference.TryGetTarget(out var target))
63+
{
64+
if (target.IsDisposed)
65+
return; // ignore disposed references
66+
67+
target.Dispose();
68+
}
69+
};
70+
}
71+
}
72+
}

Assets/_PackageRoot/Runtime/Future/CancelComponent/ComponentTrigger.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/_PackageRoot/Runtime/Future/CancelComponent/ComponentCancelOnDestroy.cs renamed to Assets/_PackageRoot/Runtime/Future/CancelComponent/ComponentTriggerOnDestroy.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
namespace Extensions.Unity.ImageLoader
22
{
3-
internal class ComponentCancelOnDestroy : ComponentCancelOn
3+
internal class ComponentTriggerOnDestroy : ComponentTrigger
44
{
55
private void OnDestroy() => Trigger();
66
}

Assets/_PackageRoot/Runtime/Future/CancelComponent/ComponentTriggerOnDestroy.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)