12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- using System; // require keep for Windows Universal App
- using UnityEngine;
- namespace UniRx.Triggers
- {
- [DisallowMultipleComponent]
- public class ObservableTriggerTrigger : ObservableTriggerBase
- {
- Subject<Collider> onTriggerEnter;
- /// <summary>OnTriggerEnter is called when the Collider other enters the trigger.</summary>
- void OnTriggerEnter(Collider other)
- {
- if (onTriggerEnter != null) onTriggerEnter.OnNext(other);
- }
- /// <summary>OnTriggerEnter is called when the Collider other enters the trigger.</summary>
- public IObservable<Collider> OnTriggerEnterAsObservable()
- {
- return onTriggerEnter ?? (onTriggerEnter = new Subject<Collider>());
- }
- Subject<Collider> onTriggerExit;
- /// <summary>OnTriggerExit is called when the Collider other has stopped touching the trigger.</summary>
- void OnTriggerExit(Collider other)
- {
- if (onTriggerExit != null) onTriggerExit.OnNext(other);
- }
- /// <summary>OnTriggerExit is called when the Collider other has stopped touching the trigger.</summary>
- public IObservable<Collider> OnTriggerExitAsObservable()
- {
- return onTriggerExit ?? (onTriggerExit = new Subject<Collider>());
- }
- Subject<Collider> onTriggerStay;
- /// <summary>OnTriggerStay is called once per frame for every Collider other that is touching the trigger.</summary>
- void OnTriggerStay(Collider other)
- {
- if (onTriggerStay != null) onTriggerStay.OnNext(other);
- }
- /// <summary>OnTriggerStay is called once per frame for every Collider other that is touching the trigger.</summary>
- public IObservable<Collider> OnTriggerStayAsObservable()
- {
- return onTriggerStay ?? (onTriggerStay = new Subject<Collider>());
- }
-
- protected override void RaiseOnCompletedOnDestroy()
- {
- if (onTriggerEnter != null)
- {
- onTriggerEnter.OnCompleted();
- }
- if (onTriggerExit != null)
- {
- onTriggerExit.OnCompleted();
- }
- if (onTriggerStay != null)
- {
- onTriggerStay.OnCompleted();
- }
- }
- }
- }
|