暂无描述
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

SelectObservable.cs 1.3KB

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