12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
- using System.Threading;
- using UnityEngine;
- using Cysharp.Threading.Tasks.Triggers;
- namespace Cysharp.Threading.Tasks
- {
- public static class UniTaskCancellationExtensions
- {
- /// <summary>This CancellationToken is canceled when the MonoBehaviour will be destroyed.</summary>
- public static CancellationToken GetCancellationTokenOnDestroy(this GameObject gameObject)
- {
- return gameObject.GetAsyncDestroyTrigger().CancellationToken;
- }
- /// <summary>This CancellationToken is canceled when the MonoBehaviour will be destroyed.</summary>
- public static CancellationToken GetCancellationTokenOnDestroy(this Component component)
- {
- return component.GetAsyncDestroyTrigger().CancellationToken;
- }
- }
- }
- namespace Cysharp.Threading.Tasks.Triggers
- {
- public static partial class AsyncTriggerExtensions
- {
- // Util.
- static T GetOrAddComponent<T>(GameObject gameObject)
- where T : Component
- {
- #if UNITY_2019_2_OR_NEWER
- if (!gameObject.TryGetComponent<T>(out var component))
- {
- component = gameObject.AddComponent<T>();
- }
- #else
- var component = gameObject.GetComponent<T>();
- if (component == null)
- {
- component = gameObject.AddComponent<T>();
- }
- #endif
- return component;
- }
- // Special for single operation.
- /// <summary>This function is called when the MonoBehaviour will be destroyed.</summary>
- public static UniTask OnDestroyAsync(this GameObject gameObject)
- {
- return gameObject.GetAsyncDestroyTrigger().OnDestroyAsync();
- }
- /// <summary>This function is called when the MonoBehaviour will be destroyed.</summary>
- public static UniTask OnDestroyAsync(this Component component)
- {
- return component.GetAsyncDestroyTrigger().OnDestroyAsync();
- }
- public static UniTask StartAsync(this GameObject gameObject)
- {
- return gameObject.GetAsyncStartTrigger().StartAsync();
- }
- public static UniTask StartAsync(this Component component)
- {
- return component.GetAsyncStartTrigger().StartAsync();
- }
- public static UniTask AwakeAsync(this GameObject gameObject)
- {
- return gameObject.GetAsyncAwakeTrigger().AwakeAsync();
- }
- public static UniTask AwakeAsync(this Component component)
- {
- return component.GetAsyncAwakeTrigger().AwakeAsync();
- }
- }
- }
|