123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- using System;
-
- namespace UnityEngine.InputSystem.LowLevel
- {
- internal class SelectObservable<TSource, TResult> : IObservable<TResult>
- {
- private readonly IObservable<TSource> m_Source;
- private readonly Func<TSource, TResult> m_Filter;
-
- public SelectObservable(IObservable<TSource> source, Func<TSource, TResult> filter)
- {
- m_Source = source;
- m_Filter = filter;
- }
-
- public IDisposable Subscribe(IObserver<TResult> observer)
- {
- return m_Source.Subscribe(new Select(this, observer));
- }
-
- private class Select : IObserver<TSource>
- {
- private SelectObservable<TSource, TResult> m_Observable;
- private readonly IObserver<TResult> m_Observer;
-
- public Select(SelectObservable<TSource, TResult> observable, IObserver<TResult> observer)
- {
- m_Observable = observable;
- m_Observer = observer;
- }
-
- public void OnCompleted()
- {
- }
-
- public void OnError(Exception error)
- {
- Debug.LogException(error);
- }
-
- public void OnNext(TSource evt)
- {
- var result = m_Observable.m_Filter(evt);
- m_Observer.OnNext(result);
- }
- }
- }
- }
|