Advertisement
Pro_Unit

ObservableTriggerExtensions.Component.cs

Dec 25th, 2023
938
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 24.69 KB | None | 0 0
  1. using System; // require keep for Windows Universal App
  2. using UnityEngine;
  3.  
  4. #if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)
  5. using UnityEngine.EventSystems;
  6. #endif
  7.  
  8. namespace UniRx.Triggers
  9. {
  10.     // for Component
  11.     public static partial class ObservableTriggerExtensions
  12.     {
  13.         #region ObservableAnimatorTrigger
  14.  
  15.         /// <summary>Callback for setting up animation IK (inverse kinematics).</summary>
  16.         public static IObservable<int> OnAnimatorIKAsObservable(this Component component)
  17.         {
  18.             if (component == null || component.gameObject == null) return Observable.Empty<int>();
  19.             return GetOrAddComponent<ObservableAnimatorTrigger>(component.gameObject).OnAnimatorIKAsObservable();
  20.         }
  21.  
  22.         /// <summary>Callback for processing animation movements for modifying root motion.</summary>
  23.         public static IObservable<Unit> OnAnimatorMoveAsObservable(this Component component)
  24.         {
  25.             if (component == null || component.gameObject == null) return Observable.Empty<Unit>();
  26.             return GetOrAddComponent<ObservableAnimatorTrigger>(component.gameObject).OnAnimatorMoveAsObservable();
  27.         }
  28.  
  29.         #endregion
  30.  
  31.         #region ObservableCollision2DTrigger
  32.  
  33.         /// <summary>Sent when an incoming collider makes contact with this object's collider (2D physics only).</summary>
  34.         public static IObservable<Collision2D> OnCollisionEnter2DAsObservable(this Component component)
  35.         {
  36.             if (component == null || component.gameObject == null) return Observable.Empty<Collision2D>();
  37.             return GetOrAddComponent<ObservableCollision2DTrigger>(component.gameObject).OnCollisionEnter2DAsObservable();
  38.         }
  39.  
  40.  
  41.         /// <summary>Sent when a collider on another object stops touching this object's collider (2D physics only).</summary>
  42.         public static IObservable<Collision2D> OnCollisionExit2DAsObservable(this Component component)
  43.         {
  44.             if (component == null || component.gameObject == null) return Observable.Empty<Collision2D>();
  45.             return GetOrAddComponent<ObservableCollision2DTrigger>(component.gameObject).OnCollisionExit2DAsObservable();
  46.         }
  47.  
  48.         /// <summary>Sent each frame where a collider on another object is touching this object's collider (2D physics only).</summary>
  49.         public static IObservable<Collision2D> OnCollisionStay2DAsObservable(this Component component)
  50.         {
  51.             if (component == null || component.gameObject == null) return Observable.Empty<Collision2D>();
  52.             return GetOrAddComponent<ObservableCollision2DTrigger>(component.gameObject).OnCollisionStay2DAsObservable();
  53.         }
  54.  
  55.         #endregion
  56.  
  57.         #region ObservableCollisionTrigger
  58.  
  59.         /// <summary>OnCollisionEnter is called when this collider/rigidbody has begun touching another rigidbody/collider.</summary>
  60.         public static IObservable<Collision> OnCollisionEnterAsObservable(this Component component)
  61.         {
  62.             if (component == null || component.gameObject == null) return Observable.Empty<Collision>();
  63.             return GetOrAddComponent<ObservableCollisionTrigger>(component.gameObject).OnCollisionEnterAsObservable();
  64.         }
  65.  
  66.  
  67.         /// <summary>OnCollisionExit is called when this collider/rigidbody has stopped touching another rigidbody/collider.</summary>
  68.         public static IObservable<Collision> OnCollisionExitAsObservable(this Component component)
  69.         {
  70.             if (component == null || component.gameObject == null) return Observable.Empty<Collision>();
  71.             return GetOrAddComponent<ObservableCollisionTrigger>(component.gameObject).OnCollisionExitAsObservable();
  72.         }
  73.  
  74.         /// <summary>OnCollisionStay is called once per frame for every collider/rigidbody that is touching rigidbody/collider.</summary>
  75.         public static IObservable<Collision> OnCollisionStayAsObservable(this Component component)
  76.         {
  77.             if (component == null || component.gameObject == null) return Observable.Empty<Collision>();
  78.             return GetOrAddComponent<ObservableCollisionTrigger>(component.gameObject).OnCollisionStayAsObservable();
  79.         }
  80.  
  81.         #endregion
  82.  
  83.         #region ObservableDestroyTrigger
  84.  
  85.         /// <summary>This function is called when the MonoBehaviour will be destroyed.</summary>
  86.         public static IObservable<Unit> OnDestroyAsObservable(this Component component)
  87.         {
  88.             if (component == null || component.gameObject == null) return Observable.Return(Unit.Default); // send destroy message
  89.             return GetOrAddComponent<ObservableDestroyTrigger>(component.gameObject).OnDestroyAsObservable();
  90.         }
  91.  
  92.         #endregion
  93.  
  94.  
  95.         #region ObservableEnableTrigger
  96.  
  97.         /// <summary>This function is called when the object becomes enabled and active.</summary>
  98.         public static IObservable<Unit> OnEnableAsObservable(this Component component)
  99.         {
  100.             if (component == null || component.gameObject == null) return Observable.Empty<Unit>();
  101.             return GetOrAddComponent<ObservableEnableTrigger>(component.gameObject).OnEnableAsObservable();
  102.         }
  103.  
  104.         /// <summary>This function is called when the behaviour becomes disabled () or inactive.</summary>
  105.         public static IObservable<Unit> OnDisableAsObservable(this Component component)
  106.         {
  107.             if (component == null || component.gameObject == null) return Observable.Empty<Unit>();
  108.             return GetOrAddComponent<ObservableEnableTrigger>(component.gameObject).OnDisableAsObservable();
  109.         }
  110.  
  111.         #endregion
  112.  
  113.         #region ObservableFixedUpdateTrigger
  114.  
  115.         /// <summary>This function is called every fixed framerate frame, if the MonoBehaviour is enabled.</summary>
  116.         public static IObservable<Unit> FixedUpdateAsObservable(this Component component)
  117.         {
  118.             if (component == null || component.gameObject == null) return Observable.Empty<Unit>();
  119.             return GetOrAddComponent<ObservableFixedUpdateTrigger>(component.gameObject).FixedUpdateAsObservable();
  120.         }
  121.  
  122.         #endregion
  123.  
  124.         #region ObservableLateUpdateTrigger
  125.  
  126.         /// <summary>LateUpdate is called every frame, if the Behaviour is enabled.</summary>
  127.         public static IObservable<Unit> LateUpdateAsObservable(this Component component)
  128.         {
  129.             if (component == null || component.gameObject == null) return Observable.Empty<Unit>();
  130.             return GetOrAddComponent<ObservableLateUpdateTrigger>(component.gameObject).LateUpdateAsObservable();
  131.         }
  132.  
  133.         #endregion
  134.  
  135. #if !(UNITY_IPHONE || UNITY_ANDROID || UNITY_METRO)
  136.  
  137.         #region ObservableMouseTrigger
  138.  
  139.         /// <summary>OnMouseDown is called when the user has pressed the mouse button while over the GUIElement or Collider.</summary>
  140.         public static IObservable<Unit> OnMouseDownAsObservable(this Component component)
  141.         {
  142.             if (component == null || component.gameObject == null) return Observable.Empty<Unit>();
  143.             return GetOrAddComponent<ObservableMouseTrigger>(component.gameObject).OnMouseDownAsObservable();
  144.         }
  145.  
  146.         /// <summary>OnMouseDrag is called when the user has clicked on a GUIElement or Collider and is still holding down the mouse.</summary>
  147.         public static IObservable<Unit> OnMouseDragAsObservable(this Component component)
  148.         {
  149.             if (component == null || component.gameObject == null) return Observable.Empty<Unit>();
  150.             return GetOrAddComponent<ObservableMouseTrigger>(component.gameObject).OnMouseDragAsObservable();
  151.         }
  152.  
  153.         /// <summary>OnMouseEnter is called when the mouse entered the GUIElement or Collider.</summary>
  154.         public static IObservable<Unit> OnMouseEnterAsObservable(this Component component)
  155.         {
  156.             if (component == null || component.gameObject == null) return Observable.Empty<Unit>();
  157.             return GetOrAddComponent<ObservableMouseTrigger>(component.gameObject).OnMouseEnterAsObservable();
  158.         }
  159.  
  160.         /// <summary>OnMouseExit is called when the mouse is not any longer over the GUIElement or Collider.</summary>
  161.         public static IObservable<Unit> OnMouseExitAsObservable(this Component component)
  162.         {
  163.             if (component == null || component.gameObject == null) return Observable.Empty<Unit>();
  164.             return GetOrAddComponent<ObservableMouseTrigger>(component.gameObject).OnMouseExitAsObservable();
  165.         }
  166.  
  167.         /// <summary>OnMouseOver is called every frame while the mouse is over the GUIElement or Collider.</summary>
  168.         public static IObservable<Unit> OnMouseOverAsObservable(this Component component)
  169.         {
  170.             if (component == null || component.gameObject == null) return Observable.Empty<Unit>();
  171.             return GetOrAddComponent<ObservableMouseTrigger>(component.gameObject).OnMouseOverAsObservable();
  172.         }
  173.  
  174.         /// <summary>OnMouseUp is called when the user has released the mouse button.</summary>
  175.         public static IObservable<Unit> OnMouseUpAsObservable(this Component component)
  176.         {
  177.             if (component == null || component.gameObject == null) return Observable.Empty<Unit>();
  178.             return GetOrAddComponent<ObservableMouseTrigger>(component.gameObject).OnMouseUpAsObservable();
  179.         }
  180.  
  181.         /// <summary>OnMouseUpAsButton is only called when the mouse is released over the same GUIElement or Collider as it was pressed.</summary>
  182.         public static IObservable<Unit> OnMouseUpAsButtonAsObservable(this Component component)
  183.         {
  184.             if (component == null || component.gameObject == null) return Observable.Empty<Unit>();
  185.             return GetOrAddComponent<ObservableMouseTrigger>(component.gameObject).OnMouseUpAsButtonAsObservable();
  186.         }
  187.  
  188.         #endregion
  189.  
  190. #endif
  191.  
  192.         #region ObservableTrigger2DTrigger
  193.  
  194.         /// <summary>Sent when another object enters a trigger collider attached to this object (2D physics only).</summary>
  195.         public static IObservable<Collider2D> OnTriggerEnter2DAsObservable(this Component component)
  196.         {
  197.             if (component == null || component.gameObject == null) return Observable.Empty<Collider2D>();
  198.             return GetOrAddComponent<ObservableTrigger2DTrigger>(component.gameObject).OnTriggerEnter2DAsObservable();
  199.         }
  200.  
  201.  
  202.         /// <summary>Sent when another object leaves a trigger collider attached to this object (2D physics only).</summary>
  203.         public static IObservable<Collider2D> OnTriggerExit2DAsObservable(this Component component)
  204.         {
  205.             if (component == null || component.gameObject == null) return Observable.Empty<Collider2D>();
  206.             return GetOrAddComponent<ObservableTrigger2DTrigger>(component.gameObject).OnTriggerExit2DAsObservable();
  207.         }
  208.  
  209.         /// <summary>Sent each frame where another object is within a trigger collider attached to this object (2D physics only).</summary>
  210.         public static IObservable<Collider2D> OnTriggerStay2DAsObservable(this Component component)
  211.         {
  212.             if (component == null || component.gameObject == null) return Observable.Empty<Collider2D>();
  213.             return GetOrAddComponent<ObservableTrigger2DTrigger>(component.gameObject).OnTriggerStay2DAsObservable();
  214.         }
  215.  
  216.         #endregion
  217.  
  218.         #region ObservableTriggerTrigger
  219.  
  220.         /// <summary>OnTriggerEnter is called when the Collider other enters the trigger.</summary>
  221.         public static IObservable<Collider> OnTriggerEnterAsObservable(this Component component)
  222.         {
  223.             if (component == null || component.gameObject == null) return Observable.Empty<Collider>();
  224.             return GetOrAddComponent<ObservableTriggerTrigger>(component.gameObject).OnTriggerEnterAsObservable();
  225.         }
  226.  
  227.  
  228.         /// <summary>OnTriggerExit is called when the Collider other has stopped touching the trigger.</summary>
  229.         public static IObservable<Collider> OnTriggerExitAsObservable(this Component component)
  230.         {
  231.             if (component == null || component.gameObject == null) return Observable.Empty<Collider>();
  232.             return GetOrAddComponent<ObservableTriggerTrigger>(component.gameObject).OnTriggerExitAsObservable();
  233.         }
  234.  
  235.         /// <summary>OnTriggerStay is called once per frame for every Collider other that is touching the trigger.</summary>
  236.         public static IObservable<Collider> OnTriggerStayAsObservable(this Component component)
  237.         {
  238.             if (component == null || component.gameObject == null) return Observable.Empty<Collider>();
  239.             return GetOrAddComponent<ObservableTriggerTrigger>(component.gameObject).OnTriggerStayAsObservable();
  240.         }
  241.  
  242.         #endregion
  243.  
  244.         #region ObservableUpdateTrigger
  245.  
  246.         /// <summary>Update is called every frame, if the MonoBehaviour is enabled.</summary>
  247.         public static IObservable<Unit> UpdateAsObservable(this Component component)
  248.         {
  249.             if (component == null || component.gameObject == null) return Observable.Empty<Unit>();
  250.             return GetOrAddComponent<ObservableUpdateTrigger>(component.gameObject).UpdateAsObservable();
  251.         }
  252.  
  253.         #endregion
  254.  
  255.         #region ObservableVisibleTrigger
  256.  
  257.         /// <summary>OnBecameInvisible is called when the renderer is no longer visible by any camera.</summary>
  258.         public static IObservable<Unit> OnBecameInvisibleAsObservable(this Component component)
  259.         {
  260.             if (component == null || component.gameObject == null) return Observable.Empty<Unit>();
  261.             return GetOrAddComponent<ObservableVisibleTrigger>(component.gameObject).OnBecameInvisibleAsObservable();
  262.         }
  263.  
  264.         /// <summary>OnBecameVisible is called when the renderer became visible by any camera.</summary>
  265.         public static IObservable<Unit> OnBecameVisibleAsObservable(this Component component)
  266.         {
  267.             if (component == null || component.gameObject == null) return Observable.Empty<Unit>();
  268.             return GetOrAddComponent<ObservableVisibleTrigger>(component.gameObject).OnBecameVisibleAsObservable();
  269.         }
  270.  
  271.         #endregion
  272.  
  273. #if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)
  274.  
  275.         #region ObservableTransformChangedTrigger
  276.  
  277.         /// <summary>Callback sent to the graphic before a Transform parent change occurs.</summary>
  278.         public static IObservable<Unit> OnBeforeTransformParentChangedAsObservable(this Component component)
  279.         {
  280.             if (component == null || component.gameObject == null) return Observable.Empty<Unit>();
  281.             return GetOrAddComponent<ObservableTransformChangedTrigger>(component.gameObject).OnBeforeTransformParentChangedAsObservable();
  282.         }
  283.  
  284.         /// <summary>This function is called when the parent property of the transform of the GameObject has changed.</summary>
  285.         public static IObservable<Unit> OnTransformParentChangedAsObservable(this Component component)
  286.         {
  287.             if (component == null || component.gameObject == null) return Observable.Empty<Unit>();
  288.             return GetOrAddComponent<ObservableTransformChangedTrigger>(component.gameObject).OnTransformParentChangedAsObservable();
  289.         }
  290.  
  291.         /// <summary>This function is called when the list of children of the transform of the GameObject has changed.</summary>
  292.         public static IObservable<Unit> OnTransformChildrenChangedAsObservable(this Component component)
  293.         {
  294.             if (component == null || component.gameObject == null) return Observable.Empty<Unit>();
  295.             return GetOrAddComponent<ObservableTransformChangedTrigger>(component.gameObject).OnTransformChildrenChangedAsObservable();
  296.         }
  297.  
  298.         #endregion
  299.  
  300.         #region ObservableCanvasGroupChangedTrigger
  301.  
  302.         /// <summary>Callback that is sent if the canvas group is changed.</summary>
  303.         public static IObservable<Unit> OnCanvasGroupChangedAsObservable(this Component component)
  304.         {
  305.             if (component == null || component.gameObject == null) return Observable.Empty<Unit>();
  306.             return GetOrAddComponent<ObservableCanvasGroupChangedTrigger>(component.gameObject).OnCanvasGroupChangedAsObservable();
  307.         }
  308.  
  309.         #endregion
  310.  
  311.         #region ObservableRectTransformTrigger
  312.  
  313.         /// <summary>Callback that is sent if an associated RectTransform has it's dimensions changed.</summary>
  314.         public static IObservable<Unit> OnRectTransformDimensionsChangeAsObservable(this Component component)
  315.         {
  316.             if (component == null || component.gameObject == null) return Observable.Empty<Unit>();
  317.             return GetOrAddComponent<ObservableRectTransformTrigger>(component.gameObject).OnRectTransformDimensionsChangeAsObservable();
  318.         }
  319.  
  320.         /// <summary>Callback that is sent if an associated RectTransform is removed.</summary>
  321.         public static IObservable<Unit> OnRectTransformRemovedAsObservable(this Component component)
  322.         {
  323.             if (component == null || component.gameObject == null) return Observable.Empty<Unit>();
  324.             return GetOrAddComponent<ObservableRectTransformTrigger>(component.gameObject).OnRectTransformRemovedAsObservable();
  325.         }
  326.  
  327.         #endregion
  328.  
  329.         // uGUI
  330.  
  331.         #region ObservableEventTrigger classes
  332.  
  333.         public static IObservable<BaseEventData> OnDeselectAsObservable(this UIBehaviour component)
  334.         {
  335.             if (component == null || component.gameObject == null) return Observable.Empty<BaseEventData>();
  336.             return GetOrAddComponent<ObservableDeselectTrigger>(component.gameObject).OnDeselectAsObservable();
  337.         }
  338.  
  339.         public static IObservable<AxisEventData> OnMoveAsObservable(this UIBehaviour component)
  340.         {
  341.             if (component == null || component.gameObject == null) return Observable.Empty<AxisEventData>();
  342.             return GetOrAddComponent<ObservableMoveTrigger>(component.gameObject).OnMoveAsObservable();
  343.         }
  344.  
  345.         public static IObservable<PointerEventData> OnPointerDownAsObservable(this UIBehaviour component)
  346.         {
  347.             if (component == null || component.gameObject == null) return Observable.Empty<PointerEventData>();
  348.             return GetOrAddComponent<ObservablePointerDownTrigger>(component.gameObject).OnPointerDownAsObservable();
  349.         }
  350.  
  351.         public static IObservable<PointerEventData> OnPointerEnterAsObservable(this UIBehaviour component)
  352.         {
  353.             if (component == null || component.gameObject == null) return Observable.Empty<PointerEventData>();
  354.             return GetOrAddComponent<ObservablePointerEnterTrigger>(component.gameObject).OnPointerEnterAsObservable();
  355.         }
  356.  
  357.         public static IObservable<PointerEventData> OnPointerExitAsObservable(this UIBehaviour component)
  358.         {
  359.             if (component == null || component.gameObject == null) return Observable.Empty<PointerEventData>();
  360.             return GetOrAddComponent<ObservablePointerExitTrigger>(component.gameObject).OnPointerExitAsObservable();
  361.         }
  362.  
  363.         public static IObservable<PointerEventData> OnPointerUpAsObservable(this UIBehaviour component)
  364.         {
  365.             if (component == null || component.gameObject == null) return Observable.Empty<PointerEventData>();
  366.             return GetOrAddComponent<ObservablePointerUpTrigger>(component.gameObject).OnPointerUpAsObservable();
  367.         }
  368.  
  369.         public static IObservable<BaseEventData> OnSelectAsObservable(this UIBehaviour component)
  370.         {
  371.             if (component == null || component.gameObject == null) return Observable.Empty<BaseEventData>();
  372.             return GetOrAddComponent<ObservableSelectTrigger>(component.gameObject).OnSelectAsObservable();
  373.         }
  374.  
  375.         public static IObservable<PointerEventData> OnPointerClickAsObservable(this UIBehaviour component)
  376.         {
  377.             if (component == null || component.gameObject == null) return Observable.Empty<PointerEventData>();
  378.             return GetOrAddComponent<ObservablePointerClickTrigger>(component.gameObject).OnPointerClickAsObservable();
  379.         }
  380.  
  381.         public static IObservable<BaseEventData> OnSubmitAsObservable(this UIBehaviour component)
  382.         {
  383.             if (component == null || component.gameObject == null) return Observable.Empty<BaseEventData>();
  384.             return GetOrAddComponent<ObservableSubmitTrigger>(component.gameObject).OnSubmitAsObservable();
  385.         }
  386.  
  387.         public static IObservable<PointerEventData> OnDragAsObservable(this UIBehaviour component)
  388.         {
  389.             if (component == null || component.gameObject == null) return Observable.Empty<PointerEventData>();
  390.             return GetOrAddComponent<ObservableDragTrigger>(component.gameObject).OnDragAsObservable();
  391.         }
  392.  
  393.         public static IObservable<PointerEventData> OnBeginDragAsObservable(this UIBehaviour component)
  394.         {
  395.             if (component == null || component.gameObject == null) return Observable.Empty<PointerEventData>();
  396.             return GetOrAddComponent<ObservableBeginDragTrigger>(component.gameObject).OnBeginDragAsObservable();
  397.         }
  398.  
  399.         public static IObservable<PointerEventData> OnEndDragAsObservable(this UIBehaviour component)
  400.         {
  401.             if (component == null || component.gameObject == null) return Observable.Empty<PointerEventData>();
  402.             return GetOrAddComponent<ObservableEndDragTrigger>(component.gameObject).OnEndDragAsObservable();
  403.         }
  404.  
  405.         public static IObservable<PointerEventData> OnDropAsObservable(this UIBehaviour component)
  406.         {
  407.             if (component == null || component.gameObject == null) return Observable.Empty<PointerEventData>();
  408.             return GetOrAddComponent<ObservableDropTrigger>(component.gameObject).OnDropAsObservable();
  409.         }
  410.  
  411.         public static IObservable<BaseEventData> OnUpdateSelectedAsObservable(this UIBehaviour component)
  412.         {
  413.             if (component == null || component.gameObject == null) return Observable.Empty<BaseEventData>();
  414.             return GetOrAddComponent<ObservableUpdateSelectedTrigger>(component.gameObject).OnUpdateSelectedAsObservable();
  415.         }
  416.  
  417.         public static IObservable<PointerEventData> OnInitializePotentialDragAsObservable(this UIBehaviour component)
  418.         {
  419.             if (component == null || component.gameObject == null) return Observable.Empty<PointerEventData>();
  420.             return GetOrAddComponent<ObservableInitializePotentialDragTrigger>(component.gameObject).OnInitializePotentialDragAsObservable();
  421.         }
  422.  
  423.         public static IObservable<BaseEventData> OnCancelAsObservable(this UIBehaviour component)
  424.         {
  425.             if (component == null || component.gameObject == null) return Observable.Empty<BaseEventData>();
  426.             return GetOrAddComponent<ObservableCancelTrigger>(component.gameObject).OnCancelAsObservable();
  427.         }
  428.  
  429.         public static IObservable<PointerEventData> OnScrollAsObservable(this UIBehaviour component)
  430.         {
  431.             if (component == null || component.gameObject == null) return Observable.Empty<PointerEventData>();
  432.             return GetOrAddComponent<ObservableScrollTrigger>(component.gameObject).OnScrollAsObservable();
  433.         }
  434.  
  435.         #endregion
  436.  
  437. #endif
  438.  
  439.         #region ObservableParticleTrigger
  440.  
  441.         /// <summary>OnParticleCollision is called when a particle hits a collider.</summary>
  442.         public static IObservable<GameObject> OnParticleCollisionAsObservable(this Component component)
  443.         {
  444.             if (component == null || component.gameObject == null) return Observable.Empty<GameObject>();
  445.             return GetOrAddComponent<ObservableParticleTrigger>(component.gameObject).OnParticleCollisionAsObservable();
  446.         }
  447.        
  448.         /// <summary>OnParticleCollision is called when a particle hits a collider.</summary>
  449.         public static IObservable<Unit> OnParticleDurationCompleteAsObservable(this Component component) =>
  450.             component == null || component.gameObject == null
  451.                 ? Observable.Empty<Unit>()
  452.                 : GetOrAddComponent<ObservableParticleTrigger>(component.gameObject)
  453.                     .OnParticleDurationCompleteAsObservable();
  454.  
  455. #if UNITY_5_4_OR_NEWER
  456.  
  457.         /// <summary>OnParticleTrigger is called when any particles in a particle system meet the conditions in the trigger module.</summary>
  458.         public static IObservable<Unit> OnParticleTriggerAsObservable(this Component component)
  459.         {
  460.             if (component == null || component.gameObject == null) return Observable.Empty<Unit>();
  461.             return GetOrAddComponent<ObservableParticleTrigger>(component.gameObject).OnParticleTriggerAsObservable();
  462.         }
  463.  
  464. #endif
  465.  
  466.         #endregion
  467.     }
  468. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement