123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- using System;
-
- namespace UnityEngine.InputSystem.Utilities
- {
- internal class WhereObservable<TValue> : IObservable<TValue>
- {
- private readonly IObservable<TValue> m_Source;
- private readonly Func<TValue, bool> m_Predicate;
-
- public WhereObservable(IObservable<TValue> source, Func<TValue, bool> predicate)
- {
- m_Source = source;
- m_Predicate = predicate;
- }
-
- public IDisposable Subscribe(IObserver<TValue> observer)
- {
- return m_Source.Subscribe(new Where(this, observer));
- }
-
- private class Where : IObserver<TValue>
- {
- private WhereObservable<TValue> m_Observable;
- private readonly IObserver<TValue> m_Observer;
-
- public Where(WhereObservable<TValue> observable, IObserver<TValue> observer)
- {
- m_Observable = observable;
- m_Observer = observer;
- }
-
- public void OnCompleted()
- {
- }
-
- public void OnError(Exception error)
- {
- Debug.LogException(error);
- }
-
- public void OnNext(TValue evt)
- {
- if (m_Observable.m_Predicate(evt))
- m_Observer.OnNext(evt);
- }
- }
- }
- }
|