public static IObservable <T> AsObservable <T>(this UnityEngine.Events.UnityEvent <T> unityEvent) { return(Observable.FromEvent <UnityAction <T>, T>(h => new UnityAction <T>(h), h => unityEvent.AddListener(h), h => unityEvent.RemoveListener(h))); }
public static IObservable <Tuple <T0, T1, T2, T3> > AsObservable <T0, T1, T2, T3>(this UnityEngine.Events.UnityEvent <T0, T1, T2, T3> unityEvent) { return(Observable.FromEvent <UnityAction <T0, T1, T2, T3>, Tuple <T0, T1, T2, T3> >( h => (t0, t1, t2, t3) => h(Tuple.Create(t0, t1, t2, t3)), h => unityEvent.AddListener(h), h => unityEvent.RemoveListener(h))); }
static void EventAotCheck2() { var test = new EventTestesr(); { var isRaised = false; var d = Observable.FromEvent <EventHandler, EventArgs>( h => (sender, e) => h.Invoke(e), h => test.Event1 += h, h => test.Event1 -= h) .Subscribe(x => isRaised = true); test.Fire(1); Console.WriteLine(isRaised); isRaised = false; d.Dispose(); test.Fire(1); Console.WriteLine(isRaised == false); } { var isRaised = false; var d = Observable.FromEvent <EventHandler <MyEventArgs>, MyEventArgs>( h => (sender, e) => h.Invoke(e), h => test.Event2 += h, h => test.Event2 -= h) .Subscribe(x => isRaised = true); test.Fire(2); Console.WriteLine(isRaised); isRaised = false; d.Dispose(); test.Fire(2); Console.WriteLine(isRaised == false); } { var isRaised = false; var d = Observable.FromEvent <MyEventHandler, MyEventArgs>( h => (sender, e) => h.Invoke(e), h => test.Event3 += h, h => test.Event3 -= h) .Subscribe(x => isRaised = true); test.Fire(3); Console.WriteLine(isRaised); isRaised = false; d.Dispose(); test.Fire(3); Console.WriteLine(isRaised == false); } { var isRaised = false; var d = Observable.FromEvent <Action, Unit>( h => () => h(Unit.Default), h => test.Event4 += h, h => test.Event4 -= h) .Subscribe(x => isRaised = true); test.Fire(4); Console.WriteLine(isRaised); isRaised = false; d.Dispose(); test.Fire(4); Console.WriteLine(isRaised == false); } // shortcut { var isRaised = false; var d = Observable.FromEvent( h => test.Event4 += h, h => test.Event4 -= h) .Subscribe(x => isRaised = true); test.Fire(4); Console.WriteLine(isRaised); isRaised = false; d.Dispose(); test.Fire(4); Console.WriteLine(isRaised == false); } { var isRaised = false; var d = Observable.FromEvent <Action <int>, int>( h => h, h => test.Event5 += h, h => test.Event5 -= h) .Subscribe(x => isRaised = true); test.Fire(5); Console.WriteLine(isRaised); isRaised = false; d.Dispose(); test.Fire(5); Console.WriteLine(isRaised == false); } // shortcut { var isRaised = false; var d = Observable.FromEvent <int>( h => test.Event5 += h, h => test.Event5 -= h) .Subscribe(x => isRaised = true); test.Fire(5); Console.WriteLine(isRaised); isRaised = false; d.Dispose(); test.Fire(5); Console.WriteLine(isRaised == false); } { var isRaised = false; var d = Observable.FromEvent <Action <int, string>, Tuple <int, string> >( h => (x, y) => h(Tuple.Create(x, y)), h => test.Event6 += h, h => test.Event6 -= h) .Subscribe(x => isRaised = true); test.Fire(6); Console.WriteLine(isRaised); isRaised = false; d.Dispose(); test.Fire(6); Console.WriteLine(isRaised == false); } }
public static IObservable <Unit> AsObservable(this UnityEngine.Events.UnityEvent unityEvent) { return(Observable.FromEvent <UnityAction>(h => h.Invoke, h => unityEvent.AddListener(h), h => unityEvent.RemoveListener(h))); }