public static UniRx.IObservable <T> EmitWhenEnabled <T>(this UniRx.IObservable <T> obs, UniRx.IObservable <bool> enabler) { return((from e in enabler where e select e into _ select obs.TakeUntil(from e in enabler where !e select e)).Switch()); }
public static UniRx.IObservable <T> WhenEnabled <T>(this UniRx.IObservable <T> obs, GameObject go) { UniRx.IObservable <Unit> source = (!go.activeInHierarchy) ? go.OnEnableAsObservable() : Observable.Return(Unit.Default).Concat(go.OnEnableAsObservable()); return((from _ in source select obs.TakeUntil(go.OnDisableAsObservable())).Switch()); }