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