12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- using System;
- using UnityEngine;
- namespace UniRx.Triggers
- {
- [DisallowMultipleComponent]
- public class ObservableTriggerTrigger : ObservableTriggerBase
- {
- Subject<Collider> onTriggerEnter;
-
- void OnTriggerEnter(Collider other)
- {
- if (onTriggerEnter != null) onTriggerEnter.OnNext(other);
- }
-
- public IObservable<Collider> OnTriggerEnterAsObservable()
- {
- return onTriggerEnter ?? (onTriggerEnter = new Subject<Collider>());
- }
- Subject<Collider> onTriggerExit;
-
- void OnTriggerExit(Collider other)
- {
- if (onTriggerExit != null) onTriggerExit.OnNext(other);
- }
-
- public IObservable<Collider> OnTriggerExitAsObservable()
- {
- return onTriggerExit ?? (onTriggerExit = new Subject<Collider>());
- }
- Subject<Collider> onTriggerStay;
-
- void OnTriggerStay(Collider other)
- {
- if (onTriggerStay != null) onTriggerStay.OnNext(other);
- }
-
- 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();
- }
- }
- }
- }
|