using System; using UniRx; using UnityEngine.Events; namespace PMaker.Reactive { public static class DomainStream { private static ReactiveProperty _handle = new ReactiveProperty(); public static void Publish(T stream) { _handle.Value = stream; } public static IObservable Subscribe() { return _handle; } } public static class DomainStreamUnityEventExtension { public static void Binding(this UnityEvent unityEvent, T stream) { unityEvent.AddListener(() => { DomainStream.Publish(stream); }); } } }