using System; // require keep for Windows Universal App using UnityEngine; namespace UniRx.Triggers { [DisallowMultipleComponent] public class ObservableEnableTrigger : ObservableTriggerBase { Subject onEnable; /// This function is called when the object becomes enabled and active. void OnEnable() { if (onEnable != null) onEnable.OnNext(Unit.Default); } /// This function is called when the object becomes enabled and active. public IObservable OnEnableAsObservable() { return onEnable ?? (onEnable = new Subject()); } Subject onDisable; /// This function is called when the behaviour becomes disabled () or inactive. void OnDisable() { if (onDisable != null) onDisable.OnNext(Unit.Default); } /// This function is called when the behaviour becomes disabled () or inactive. public IObservable OnDisableAsObservable() { return onDisable ?? (onDisable = new Subject()); } protected override void RaiseOnCompletedOnDestroy() { if (onEnable != null) { onEnable.OnCompleted(); } if (onDisable != null) { onDisable.OnCompleted(); } } } }