A game about forced loneliness, made by TACStudios
1using System; 2using System.Collections.Generic; 3 4namespace UnityEngine.InputSystem.Utilities 5{ 6 internal class SelectManyObservable<TSource, TResult> : IObservable<TResult> 7 { 8 private readonly IObservable<TSource> m_Source; 9 private readonly Func<TSource, IEnumerable<TResult>> m_Filter; 10 11 public SelectManyObservable(IObservable<TSource> source, Func<TSource, IEnumerable<TResult>> filter) 12 { 13 m_Source = source; 14 m_Filter = filter; 15 } 16 17 public IDisposable Subscribe(IObserver<TResult> observer) 18 { 19 return m_Source.Subscribe(new Select(this, observer)); 20 } 21 22 private class Select : IObserver<TSource> 23 { 24 private SelectManyObservable<TSource, TResult> m_Observable; 25 private readonly IObserver<TResult> m_Observer; 26 27 public Select(SelectManyObservable<TSource, TResult> observable, IObserver<TResult> observer) 28 { 29 m_Observable = observable; 30 m_Observer = observer; 31 } 32 33 public void OnCompleted() 34 { 35 } 36 37 public void OnError(Exception error) 38 { 39 Debug.LogException(error); 40 } 41 42 public void OnNext(TSource evt) 43 { 44 foreach (var result in m_Observable.m_Filter(evt)) 45 m_Observer.OnNext(result); 46 } 47 } 48 } 49}