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);
        }
Beispiel #4
0
        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);
            }
        }
Beispiel #5
0
        protected virtual void OnAdded(T item)
        {
            HandleItemAdded <T> handler = Added;

            handler?.Invoke(item);
        }
Beispiel #6
0
 public void Unsubscribe(HandleItemAdded <T> add, HandleItemRemoved <T> remove, bool callRemoveOnCurrentItems = false)
 {
     _filteredItems.Unsubscribe(add, remove, callRemoveOnCurrentItems);
 }
Beispiel #7
0
 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;
 }