#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 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(); } // Get Triggers. /// Get for OnAnimatorIKAsync | OnAnimatorMoveAsync. public static AsyncAnimatorTrigger GetAsyncAnimatorTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnAnimatorIKAsync | OnAnimatorMoveAsync. public static AsyncAnimatorTrigger GetAsyncAnimatorTrigger(this Component component) { return component.gameObject.GetAsyncAnimatorTrigger(); } /// Get for AwakeAsync. public static AsyncAwakeTrigger GetAsyncAwakeTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for AwakeAsync. public static AsyncAwakeTrigger GetAsyncAwakeTrigger(this Component component) { return component.gameObject.GetAsyncAwakeTrigger(); } /// Get for OnBeginDragAsync. public static AsyncBeginDragTrigger GetAsyncBeginDragTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnBeginDragAsync. public static AsyncBeginDragTrigger GetAsyncBeginDragTrigger(this Component component) { return component.gameObject.GetAsyncBeginDragTrigger(); } /// Get for OnCancelAsync. public static AsyncCancelTrigger GetAsyncCancelTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnCancelAsync. public static AsyncCancelTrigger GetAsyncCancelTrigger(this Component component) { return component.gameObject.GetAsyncCancelTrigger(); } /// Get for OnCanvasGroupChangedAsync. public static AsyncCanvasGroupChangedTrigger GetAsyncCanvasGroupChangedTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnCanvasGroupChangedAsync. public static AsyncCanvasGroupChangedTrigger GetAsyncCanvasGroupChangedTrigger(this Component component) { return component.gameObject.GetAsyncCanvasGroupChangedTrigger(); } /// Get for OnCollisionEnter2DAsync | OnCollisionExit2DAsync | OnCollisionStay2DAsync. public static AsyncCollision2DTrigger GetAsyncCollision2DTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnCollisionEnter2DAsync | OnCollisionExit2DAsync | OnCollisionStay2DAsync. public static AsyncCollision2DTrigger GetAsyncCollision2DTrigger(this Component component) { return component.gameObject.GetAsyncCollision2DTrigger(); } /// Get for OnCollisionEnterAsync | OnCollisionExitAsync | OnCollisionStayAsync. public static AsyncCollisionTrigger GetAsyncCollisionTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnCollisionEnterAsync | OnCollisionExitAsync | OnCollisionStayAsync. public static AsyncCollisionTrigger GetAsyncCollisionTrigger(this Component component) { return component.gameObject.GetAsyncCollisionTrigger(); } /// Get for OnDeselectAsync. public static AsyncDeselectTrigger GetAsyncDeselectTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnDeselectAsync. public static AsyncDeselectTrigger GetAsyncDeselectTrigger(this Component component) { return component.gameObject.GetAsyncDeselectTrigger(); } /// Get for OnDestroyAsync. public static AsyncDestroyTrigger GetAsyncDestroyTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnDestroyAsync. public static AsyncDestroyTrigger GetAsyncDestroyTrigger(this Component component) { return component.gameObject.GetAsyncDestroyTrigger(); } /// Get for OnDragAsync. public static AsyncDragTrigger GetAsyncDragTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnDragAsync. public static AsyncDragTrigger GetAsyncDragTrigger(this Component component) { return component.gameObject.GetAsyncDragTrigger(); } /// Get for OnDropAsync. public static AsyncDropTrigger GetAsyncDropTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnDropAsync. public static AsyncDropTrigger GetAsyncDropTrigger(this Component component) { return component.gameObject.GetAsyncDropTrigger(); } /// Get for OnEnableAsync | OnDisableAsync. public static AsyncEnableDisableTrigger GetAsyncEnableDisableTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnEnableAsync | OnDisableAsync. public static AsyncEnableDisableTrigger GetAsyncEnableDisableTrigger(this Component component) { return component.gameObject.GetAsyncEnableDisableTrigger(); } /// Get for OnEndDragAsync. public static AsyncEndDragTrigger GetAsyncEndDragTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnEndDragAsync. public static AsyncEndDragTrigger GetAsyncEndDragTrigger(this Component component) { return component.gameObject.GetAsyncEndDragTrigger(); } /// Get for FixedUpdateAsync. public static AsyncFixedUpdateTrigger GetAsyncFixedUpdateTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for FixedUpdateAsync. public static AsyncFixedUpdateTrigger GetAsyncFixedUpdateTrigger(this Component component) { return component.gameObject.GetAsyncFixedUpdateTrigger(); } /// Get for OnInitializePotentialDragAsync. public static AsyncInitializePotentialDragTrigger GetAsyncInitializePotentialDragTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnInitializePotentialDragAsync. public static AsyncInitializePotentialDragTrigger GetAsyncInitializePotentialDragTrigger(this Component component) { return component.gameObject.GetAsyncInitializePotentialDragTrigger(); } /// Get for OnJointBreakAsync. public static AsyncJointTrigger GetAsyncJointTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnJointBreakAsync. public static AsyncJointTrigger GetAsyncJointTrigger(this Component component) { return component.gameObject.GetAsyncJointTrigger(); } /// Get for LateUpdateAsync. public static AsyncLateUpdateTrigger GetAsyncLateUpdateTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for LateUpdateAsync. public static AsyncLateUpdateTrigger GetAsyncLateUpdateTrigger(this Component component) { return component.gameObject.GetAsyncLateUpdateTrigger(); } #if !(UNITY_IPHONE || UNITY_ANDROID || UNITY_METRO) /// Get for OnMouseDownAsync | OnMouseDragAsync | OnMouseEnterAsync | OnMouseExitAsync | OnMouseOverAsync | OnMouseUpAsync | OnMouseUpAsButtonAsync. public static AsyncMouseTrigger GetAsyncMouseTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnMouseDownAsync | OnMouseDragAsync | OnMouseEnterAsync | OnMouseExitAsync | OnMouseOverAsync | OnMouseUpAsync | OnMouseUpAsButtonAsync. public static AsyncMouseTrigger GetAsyncMouseTrigger(this Component component) { return component.gameObject.GetAsyncMouseTrigger(); } #endif /// Get for OnMoveAsync. public static AsyncMoveTrigger GetAsyncMoveTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnMoveAsync. public static AsyncMoveTrigger GetAsyncMoveTrigger(this Component component) { return component.gameObject.GetAsyncMoveTrigger(); } /// Get for OnParticleCollisionAsync | OnParticleTriggerAsync. public static AsyncParticleTrigger GetAsyncParticleTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnParticleCollisionAsync | OnParticleTriggerAsync. public static AsyncParticleTrigger GetAsyncParticleTrigger(this Component component) { return component.gameObject.GetAsyncParticleTrigger(); } /// Get for OnPointerClickAsync. public static AsyncPointerClickTrigger GetAsyncPointerClickTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnPointerClickAsync. public static AsyncPointerClickTrigger GetAsyncPointerClickTrigger(this Component component) { return component.gameObject.GetAsyncPointerClickTrigger(); } /// Get for OnPointerDownAsync. public static AsyncPointerDownTrigger GetAsyncPointerDownTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnPointerDownAsync. public static AsyncPointerDownTrigger GetAsyncPointerDownTrigger(this Component component) { return component.gameObject.GetAsyncPointerDownTrigger(); } /// Get for OnPointerEnterAsync. public static AsyncPointerEnterTrigger GetAsyncPointerEnterTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnPointerEnterAsync. public static AsyncPointerEnterTrigger GetAsyncPointerEnterTrigger(this Component component) { return component.gameObject.GetAsyncPointerEnterTrigger(); } /// Get for OnPointerExitAsync. public static AsyncPointerExitTrigger GetAsyncPointerExitTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnPointerExitAsync. public static AsyncPointerExitTrigger GetAsyncPointerExitTrigger(this Component component) { return component.gameObject.GetAsyncPointerExitTrigger(); } /// Get for OnPointerUpAsync. public static AsyncPointerUpTrigger GetAsyncPointerUpTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnPointerUpAsync. public static AsyncPointerUpTrigger GetAsyncPointerUpTrigger(this Component component) { return component.gameObject.GetAsyncPointerUpTrigger(); } /// Get for OnRectTransformDimensionsChange | OnRectTransformDimensionsChangeAsync | OnRectTransformRemoved | OnRectTransformRemovedAsync. public static AsyncRectTransformTrigger GetAsyncRectTransformTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnRectTransformDimensionsChange | OnRectTransformDimensionsChangeAsync | OnRectTransformRemoved | OnRectTransformRemovedAsync. public static AsyncRectTransformTrigger GetAsyncRectTransformTrigger(this Component component) { return component.gameObject.GetAsyncRectTransformTrigger(); } /// Get for OnScrollAsync. public static AsyncScrollTrigger GetAsyncScrollTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnScrollAsync. public static AsyncScrollTrigger GetAsyncScrollTrigger(this Component component) { return component.gameObject.GetAsyncScrollTrigger(); } /// Get for OnSelectAsync. public static AsyncSelectTrigger GetAsyncSelectTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnSelectAsync. public static AsyncSelectTrigger GetAsyncSelectTrigger(this Component component) { return component.gameObject.GetAsyncSelectTrigger(); } /// Get for StartAsync. public static AsyncStartTrigger GetAsyncStartTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for StartAsync. public static AsyncStartTrigger GetAsyncStartTrigger(this Component component) { return component.gameObject.GetAsyncStartTrigger(); } /// Get for OnSubmitAsync. public static AsyncSubmitTrigger GetAsyncSubmitTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnSubmitAsync. public static AsyncSubmitTrigger GetAsyncSubmitTrigger(this Component component) { return component.gameObject.GetAsyncSubmitTrigger(); } /// Get for OnBeforeTransformParentChangedAsync | OnTransformParentChangedAsync | OnTransformChildrenChangedAsync. public static AsyncTransformChangedTrigger GetAsyncTransformChangedTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnBeforeTransformParentChangedAsync | OnTransformParentChangedAsync | OnTransformChildrenChangedAsync. public static AsyncTransformChangedTrigger GetAsyncTransformChangedTrigger(this Component component) { return component.gameObject.GetAsyncTransformChangedTrigger(); } /// Get for OnTriggerEnter2DAsync | OnTriggerExit2DAsync | OnTriggerStay2DAsync. public static AsyncTrigger2DTrigger GetAsyncTrigger2DTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnTriggerEnter2DAsync | OnTriggerExit2DAsync | OnTriggerStay2DAsync. public static AsyncTrigger2DTrigger GetAsyncTrigger2DTrigger(this Component component) { return component.gameObject.GetAsyncTrigger2DTrigger(); } /// Get for OnTriggerEnterAsync | OnTriggerExitAsync | OnTriggerStayAsync. public static AsyncTriggerTrigger GetAsyncTriggerTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnTriggerEnterAsync | OnTriggerExitAsync | OnTriggerStayAsync. public static AsyncTriggerTrigger GetAsyncTriggerTrigger(this Component component) { return component.gameObject.GetAsyncTriggerTrigger(); } /// Get for OnUpdateSelectedAsync. public static AsyncUpdateSelectedTrigger GetAsyncUpdateSelectedTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnUpdateSelectedAsync. public static AsyncUpdateSelectedTrigger GetAsyncUpdateSelectedTrigger(this Component component) { return component.gameObject.GetAsyncUpdateSelectedTrigger(); } /// Get for UpdateAsync. public static AsyncUpdateTrigger GetAsyncUpdateTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for UpdateAsync. public static AsyncUpdateTrigger GetAsyncUpdateTrigger(this Component component) { return component.gameObject.GetAsyncUpdateTrigger(); } /// Get for OnBecameInvisibleAsync | OnBecameVisibleAsync. public static AsyncVisibleTrigger GetAsyncVisibleTrigger(this GameObject gameObject) { return GetOrAddComponent(gameObject); } /// Get for OnBecameInvisibleAsync | OnBecameVisibleAsync. public static AsyncVisibleTrigger GetAsyncVisibleTrigger(this Component component) { return component.gameObject.GetAsyncVisibleTrigger(); } } } #endif