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