#if CSHARP_7_OR_LATER || (UNITY_2018_3_OR_NEWER && (NET_STANDARD_2_0 || NET_4_6)) #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member using System.Threading; using UnityEngine; using UniRx.Async.Triggers; namespace UniRx.Async { public static class UniTaskCancellationExtensions { /// This CancellationToken is canceled when the MonoBehaviour will be destroyed. public static CancellationToken GetCancellationTokenOnDestroy(this GameObject gameObject) { return gameObject.GetAsyncDestroyTrigger().CancellationToken; } /// This CancellationToken is canceled when the MonoBehaviour will be destroyed. public static CancellationToken GetCancellationTokenOnDestroy(this Component component) { return component.GetAsyncDestroyTrigger().CancellationToken; } } } namespace UniRx.Async.Triggers { public static partial class AsyncTriggerExtensions { // Util. static T GetOrAddComponent(GameObject gameObject) where T : Component { var component = gameObject.GetComponent(); if (component == null) { component = gameObject.AddComponent(); } return component; } // Special for single operation. /// This function is called when the MonoBehaviour will be destroyed. public static UniTask OnDestroyAsync(this GameObject gameObject) { return gameObject.GetAsyncDestroyTrigger().OnDestroyAsync(); } /// This function is called when the MonoBehaviour will be destroyed. 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(); } } } #endif