using System; // require keep for Windows Universal App using UnityEngine; namespace UniRx.Triggers { [DisallowMultipleComponent] public class ObservableVisibleTrigger : ObservableTriggerBase { Subject onBecameInvisible; /// OnBecameInvisible is called when the renderer is no longer visible by any camera. void OnBecameInvisible() { if (onBecameInvisible != null) onBecameInvisible.OnNext(Unit.Default); } /// OnBecameInvisible is called when the renderer is no longer visible by any camera. public IObservable OnBecameInvisibleAsObservable() { return onBecameInvisible ?? (onBecameInvisible = new Subject()); } Subject onBecameVisible; /// OnBecameVisible is called when the renderer became visible by any camera. void OnBecameVisible() { if (onBecameVisible != null) onBecameVisible.OnNext(Unit.Default); } /// OnBecameVisible is called when the renderer became visible by any camera. public IObservable OnBecameVisibleAsObservable() { return onBecameVisible ?? (onBecameVisible = new Subject()); } protected override void RaiseOnCompletedOnDestroy() { if (onBecameInvisible != null) { onBecameInvisible.OnCompleted(); } if (onBecameVisible != null) { onBecameVisible.OnCompleted(); } } } }