From 81f2e37ea5dd4bceb1212386d9eed5fe1506ebf1 Mon Sep 17 00:00:00 2001 From: doyasu24 Date: Fri, 19 Jan 2024 00:29:21 +0900 Subject: [PATCH 1/3] add UniTask.AsValueTask for Unity --- .../Assets/Plugins/UniTask/Runtime/IUniTaskSource.cs | 8 ++++---- .../Plugins/UniTask/Runtime}/UniTask.AsValueTask.cs | 0 .../UniTask/Runtime/UniTask.AsValueTask.cs.meta | 11 +++++++++++ src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.cs | 8 -------- 4 files changed, 15 insertions(+), 12 deletions(-) rename src/{UniTask.NetCore/NetCore => UniTask/Assets/Plugins/UniTask/Runtime}/UniTask.AsValueTask.cs (100%) create mode 100644 src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.AsValueTask.cs.meta diff --git a/src/UniTask/Assets/Plugins/UniTask/Runtime/IUniTaskSource.cs b/src/UniTask/Assets/Plugins/UniTask/Runtime/IUniTaskSource.cs index 8814781..16a9bb3 100644 --- a/src/UniTask/Assets/Plugins/UniTask/Runtime/IUniTaskSource.cs +++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/IUniTaskSource.cs @@ -19,7 +19,7 @@ namespace Cysharp.Threading.Tasks // similar as IValueTaskSource public interface IUniTaskSource -#if !UNITY_2018_3_OR_NEWER && !NETSTANDARD2_0 +#if !NETSTANDARD2_0 : System.Threading.Tasks.Sources.IValueTaskSource #pragma warning disable CS0108 #endif @@ -30,7 +30,7 @@ namespace Cysharp.Threading.Tasks UniTaskStatus UnsafeGetStatus(); // only for debug use. -#if !UNITY_2018_3_OR_NEWER && !NETSTANDARD2_0 +#if !NETSTANDARD2_0 #pragma warning restore CS0108 System.Threading.Tasks.Sources.ValueTaskSourceStatus System.Threading.Tasks.Sources.IValueTaskSource.GetStatus(short token) @@ -53,13 +53,13 @@ namespace Cysharp.Threading.Tasks } public interface IUniTaskSource : IUniTaskSource -#if !UNITY_2018_3_OR_NEWER && !NETSTANDARD2_0 +#if !NETSTANDARD2_0 , System.Threading.Tasks.Sources.IValueTaskSource #endif { new T GetResult(short token); -#if !UNITY_2018_3_OR_NEWER && !NETSTANDARD2_0 +#if !NETSTANDARD2_0 new public UniTaskStatus GetStatus(short token) { diff --git a/src/UniTask.NetCore/NetCore/UniTask.AsValueTask.cs b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.AsValueTask.cs similarity index 100% rename from src/UniTask.NetCore/NetCore/UniTask.AsValueTask.cs rename to src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.AsValueTask.cs diff --git a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.AsValueTask.cs.meta b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.AsValueTask.cs.meta new file mode 100644 index 0000000..801bce1 --- /dev/null +++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.AsValueTask.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d38f0478933be42d895c37b862540a1c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.cs b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.cs index 8eb2087..13b81ef 100644 --- a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.cs +++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.cs @@ -69,8 +69,6 @@ namespace Cysharp.Threading.Tasks return new UniTask(new IsCanceledSource(source), token); } -#if !UNITY_2018_3_OR_NEWER - public static implicit operator System.Threading.Tasks.ValueTask(in UniTask self) { if (self.source == null) @@ -85,8 +83,6 @@ namespace Cysharp.Threading.Tasks #endif } -#endif - public override string ToString() { if (source == null) return "()"; @@ -440,8 +436,6 @@ namespace Cysharp.Threading.Tasks return self.AsUniTask(); } -#if !UNITY_2018_3_OR_NEWER - public static implicit operator System.Threading.Tasks.ValueTask(in UniTask self) { if (self.source == null) @@ -456,8 +450,6 @@ namespace Cysharp.Threading.Tasks #endif } -#endif - /// /// returns (bool IsCanceled, T Result) instead of throws OperationCanceledException. /// From fbbba061dd8e2f6e77cd32697d10b51a65ad9f38 Mon Sep 17 00:00:00 2001 From: doyasu24 Date: Fri, 19 Jan 2024 23:40:28 +0900 Subject: [PATCH 2/3] ValueTask is available in Unity 2021_2_OR_NEWER or .NET Core --- .../Assets/Plugins/UniTask/Runtime/IUniTaskSource.cs | 8 ++++---- .../Assets/Plugins/UniTask/Runtime/UniTask.AsValueTask.cs | 4 +++- src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.cs | 8 ++++++++ 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/UniTask/Assets/Plugins/UniTask/Runtime/IUniTaskSource.cs b/src/UniTask/Assets/Plugins/UniTask/Runtime/IUniTaskSource.cs index 16a9bb3..17e3c88 100644 --- a/src/UniTask/Assets/Plugins/UniTask/Runtime/IUniTaskSource.cs +++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/IUniTaskSource.cs @@ -19,7 +19,7 @@ namespace Cysharp.Threading.Tasks // similar as IValueTaskSource public interface IUniTaskSource -#if !NETSTANDARD2_0 +#if (!UNITY_2018_1_OR_NEWER || UNITY_2021_2_OR_NEWER) && !NETSTANDARD2_0 : System.Threading.Tasks.Sources.IValueTaskSource #pragma warning disable CS0108 #endif @@ -30,7 +30,7 @@ namespace Cysharp.Threading.Tasks UniTaskStatus UnsafeGetStatus(); // only for debug use. -#if !NETSTANDARD2_0 +#if (!UNITY_2018_1_OR_NEWER || UNITY_2021_2_OR_NEWER) && !NETSTANDARD2_0 #pragma warning restore CS0108 System.Threading.Tasks.Sources.ValueTaskSourceStatus System.Threading.Tasks.Sources.IValueTaskSource.GetStatus(short token) @@ -53,13 +53,13 @@ namespace Cysharp.Threading.Tasks } public interface IUniTaskSource : IUniTaskSource -#if !NETSTANDARD2_0 +#if (!UNITY_2018_1_OR_NEWER || UNITY_2021_2_OR_NEWER) && !NETSTANDARD2_0 , System.Threading.Tasks.Sources.IValueTaskSource #endif { new T GetResult(short token); -#if !NETSTANDARD2_0 +#if (!UNITY_2018_1_OR_NEWER || UNITY_2021_2_OR_NEWER) && !NETSTANDARD2_0 new public UniTaskStatus GetStatus(short token) { diff --git a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.AsValueTask.cs b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.AsValueTask.cs index c3c4b7a..52db29a 100644 --- a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.AsValueTask.cs +++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.AsValueTask.cs @@ -1,4 +1,5 @@ -#pragma warning disable 0649 +#if !UNITY_2018_1_OR_NEWER || UNITY_2021_2_OR_NEWER +#pragma warning disable 0649 using System; using System.Threading.Tasks; @@ -95,3 +96,4 @@ namespace Cysharp.Threading.Tasks #endif } } +#endif diff --git a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.cs b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.cs index 13b81ef..348c196 100644 --- a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.cs +++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.cs @@ -69,6 +69,8 @@ namespace Cysharp.Threading.Tasks return new UniTask(new IsCanceledSource(source), token); } +#if !UNITY_2018_1_OR_NEWER || UNITY_2021_2_OR_NEWER + public static implicit operator System.Threading.Tasks.ValueTask(in UniTask self) { if (self.source == null) @@ -83,6 +85,8 @@ namespace Cysharp.Threading.Tasks #endif } +#endif + public override string ToString() { if (source == null) return "()"; @@ -436,6 +440,8 @@ namespace Cysharp.Threading.Tasks return self.AsUniTask(); } +#if !UNITY_2018_1_OR_NEWER || UNITY_2021_2_OR_NEWER + public static implicit operator System.Threading.Tasks.ValueTask(in UniTask self) { if (self.source == null) @@ -450,6 +456,8 @@ namespace Cysharp.Threading.Tasks #endif } +#endif + /// /// returns (bool IsCanceled, T Result) instead of throws OperationCanceledException. /// From 4fe0861714b251c691ddcb9b4d7a9c3c051157df Mon Sep 17 00:00:00 2001 From: doyasu24 Date: Fri, 19 Jan 2024 23:42:17 +0900 Subject: [PATCH 3/3] fix: use UNITY_2018_3_OR_NEWER instead of UNITY_2018_1_OR_NEWER --- .../Assets/Plugins/UniTask/Runtime/IUniTaskSource.cs | 8 ++++---- .../Assets/Plugins/UniTask/Runtime/UniTask.AsValueTask.cs | 2 +- src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.cs | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/UniTask/Assets/Plugins/UniTask/Runtime/IUniTaskSource.cs b/src/UniTask/Assets/Plugins/UniTask/Runtime/IUniTaskSource.cs index 17e3c88..5ef6112 100644 --- a/src/UniTask/Assets/Plugins/UniTask/Runtime/IUniTaskSource.cs +++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/IUniTaskSource.cs @@ -19,7 +19,7 @@ namespace Cysharp.Threading.Tasks // similar as IValueTaskSource public interface IUniTaskSource -#if (!UNITY_2018_1_OR_NEWER || UNITY_2021_2_OR_NEWER) && !NETSTANDARD2_0 +#if (!UNITY_2018_3_OR_NEWER || UNITY_2021_2_OR_NEWER) && !NETSTANDARD2_0 : System.Threading.Tasks.Sources.IValueTaskSource #pragma warning disable CS0108 #endif @@ -30,7 +30,7 @@ namespace Cysharp.Threading.Tasks UniTaskStatus UnsafeGetStatus(); // only for debug use. -#if (!UNITY_2018_1_OR_NEWER || UNITY_2021_2_OR_NEWER) && !NETSTANDARD2_0 +#if (!UNITY_2018_3_OR_NEWER || UNITY_2021_2_OR_NEWER) && !NETSTANDARD2_0 #pragma warning restore CS0108 System.Threading.Tasks.Sources.ValueTaskSourceStatus System.Threading.Tasks.Sources.IValueTaskSource.GetStatus(short token) @@ -53,13 +53,13 @@ namespace Cysharp.Threading.Tasks } public interface IUniTaskSource : IUniTaskSource -#if (!UNITY_2018_1_OR_NEWER || UNITY_2021_2_OR_NEWER) && !NETSTANDARD2_0 +#if (!UNITY_2018_3_OR_NEWER || UNITY_2021_2_OR_NEWER) && !NETSTANDARD2_0 , System.Threading.Tasks.Sources.IValueTaskSource #endif { new T GetResult(short token); -#if (!UNITY_2018_1_OR_NEWER || UNITY_2021_2_OR_NEWER) && !NETSTANDARD2_0 +#if (!UNITY_2018_3_OR_NEWER || UNITY_2021_2_OR_NEWER) && !NETSTANDARD2_0 new public UniTaskStatus GetStatus(short token) { diff --git a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.AsValueTask.cs b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.AsValueTask.cs index 52db29a..bc9b0fb 100644 --- a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.AsValueTask.cs +++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.AsValueTask.cs @@ -1,4 +1,4 @@ -#if !UNITY_2018_1_OR_NEWER || UNITY_2021_2_OR_NEWER +#if !UNITY_2018_3_OR_NEWER || UNITY_2021_2_OR_NEWER #pragma warning disable 0649 using System; diff --git a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.cs b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.cs index 348c196..e296e62 100644 --- a/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.cs +++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/UniTask.cs @@ -69,7 +69,7 @@ namespace Cysharp.Threading.Tasks return new UniTask(new IsCanceledSource(source), token); } -#if !UNITY_2018_1_OR_NEWER || UNITY_2021_2_OR_NEWER +#if !UNITY_2018_3_OR_NEWER || UNITY_2021_2_OR_NEWER public static implicit operator System.Threading.Tasks.ValueTask(in UniTask self) { @@ -440,7 +440,7 @@ namespace Cysharp.Threading.Tasks return self.AsUniTask(); } -#if !UNITY_2018_1_OR_NEWER || UNITY_2021_2_OR_NEWER +#if !UNITY_2018_3_OR_NEWER || UNITY_2021_2_OR_NEWER public static implicit operator System.Threading.Tasks.ValueTask(in UniTask self) {