public static SubscribeEventChain Once(this SubscribeEventChain sec) { sec.Event.PostHook += () => { sec.Subscriber.Unsubscribe(sec); }; return(sec); }
public static IEnumerator WaitForMessage(this Subscriber subscriber, string[] topics, float timeout = 0.0f) { var called = false; float startTime = Time.time; SubscribeEventChain se = subscriber.Subscribe(topics, () => { called = true; }); while (!called && (timeout <= 0.0f || Time.time < startTime + timeout)) { yield return(null); } subscriber.Unsubscribe(se); }
public void Unsubscribe(SubscribeEventChain sec) { Unsubscribe(sec.Event); }
public static void Unsubscribe(this MonoBehaviour behaviour, SubscribeEventChain sec) => GetSubscriber(behaviour).Unsubscribe(sec);