public IListObserver <T> Subscribe(HandleItemAdded <T> add, HandleItemRemoved <T> remove, GameObject scope) { IListObserver <T> observer = Subscribe(add, remove); scope.GetOrCreateComponent <ObserverScope>().AddUnsubscribe(() => Unsubscribe(observer)); return(observer); }
public IListObserver <T> Subscribe(HandleItemAdded <T> add, HandleItemRemoved <T> remove, ObserverScope scope) { IListObserver <T> observer = Subscribe(add, remove); scope.AddUnsubscribe(() => Unsubscribe(observer)); return(observer); }
public IListObserver <T> Subscribe(HandleItemAdded <T> add, HandleItemRemoved <T> remove) { var observer = new ListObserver <T>(add, remove); Subscribe(observer); return(observer); }
public virtual void Unsubscribe(HandleItemAdded <T> add, HandleItemRemoved <T> remove, bool callRemoveOnCurrentItems = false) { Added -= add; Removed -= remove; if (!callRemoveOnCurrentItems) { return; } foreach (T item in Items) { remove(item); } }
protected virtual void OnAdded(T item) { HandleItemAdded <T> handler = Added; handler?.Invoke(item); }
public void Unsubscribe(HandleItemAdded <T> add, HandleItemRemoved <T> remove, bool callRemoveOnCurrentItems = false) { _filteredItems.Unsubscribe(add, remove, callRemoveOnCurrentItems); }
public IListObserver <T> Subscribe(HandleItemAdded <T> add, HandleItemRemoved <T> remove) { return(_filteredItems.Subscribe(add, remove)); }
public ListObserver(HandleItemAdded <T> add, HandleItemRemoved <T> remove) { _add = add; _remove = remove; }