public static IObservable <Unit> AnyCollectionChangeAsObservable <T>(this IReadOnlyReactiveCollection <T> reactiveCollection) { return(Observable.Merge( reactiveCollection.ObserveReset().AsUnitObservable(), reactiveCollection.ObserveAdd().AsUnitObservable(), reactiveCollection.ObserveMove().AsUnitObservable(), reactiveCollection.ObserveRemove().AsUnitObservable(), reactiveCollection.ObserveReplace().AsUnitObservable())); }
public CollectionBinder(IReadOnlyReactiveCollection <T> source, BaseListItem <T> prefab, Transform parent) { this.source = source; this.prefab = prefab; this.parent = parent; prefab.gameObject.SetActive(false); onAdd = source.ObserveAdd().Subscribe(@event => UpdateCollection()); onMove = source.ObserveMove().Subscribe(@event => UpdateCollection()); onReset = source.ObserveReset().Subscribe(@event => UpdateCollection()); onRemove = source.ObserveRemove().Subscribe(@event => UpdateCollection()); onReplace = source.ObserveReplace().Subscribe(@event => UpdateCollection()); UpdateCollection(); }