public static IDisposable BindTriggerTo(this Animator input, int parameter, IReactiveProperty <bool> property, params IFilter <bool>[] filters) { return(property .ApplyInputFilters(filters) .DistinctUntilChanged(x => x) .Subscribe(x => { input.SetTrigger(parameter); property.Value = false; }).AddTo(input)); }
public static IDisposable Bind <T>(IReactiveProperty <T> propertyA, IReactiveProperty <T> propertyB, BindingTypes bindingTypes = BindingTypes.Default, params IFilter <T>[] filters) { var propertyBBinding = propertyB .ApplyInputFilters(filters) .DistinctUntilChanged() .Subscribe(x => propertyA.Value = x); if (bindingTypes == BindingTypes.OneWay) { return(propertyBBinding); } var propertyABinding = propertyA .ApplyOutputFilters(filters) .DistinctUntilChanged() .Subscribe(x => propertyB.Value = x); return(new CompositeDisposable(propertyABinding, propertyBBinding)); }
public static IDisposable Bind <T>(Func <T> propertyAGetter, Action <T> propertyASetter, IReactiveProperty <T> propertyB, BindingTypes bindingTypes = BindingTypes.Default, params IFilter <T>[] filters) { var propertyBBinding = propertyB .ApplyInputFilters(filters) .DistinctUntilChanged() .Subscribe(propertyASetter); if (bindingTypes == BindingTypes.OneWay) { return(propertyBBinding); } var propertyABinding = Observable.EveryUpdate() .Select(x => propertyAGetter()) .ApplyOutputFilters(filters) .DistinctUntilChanged() .Subscribe(x => propertyB.Value = propertyAGetter()); return(new CompositeDisposable(propertyABinding, propertyBBinding)); }