public CombineAllValueViewModel() { CheckAllTrue = new IObservable <bool>[] { Check1, Check2, Check3 } .CombineLatestValuesAreAllTrue() .ToReadOnlyReactiveProperty() .AddTo(CompositeDisposable); CheckAllFalse = new IObservable <bool>[] { Check1, Check2, Check3 } .CombineLatestValuesAreAllFalse() .ToReadOnlyReactiveProperty() .AddTo(CompositeDisposable); CheckOr = new IObservable <bool>[] { Check1, Check2, Check3 } .CombineLatest() .Select(flags => flags.Any(x => x)) .ToReadOnlyReactiveProperty() .AddTo(CompositeDisposable); CheckOdd = new IObservable <bool>[] { Check1, Check2, Check3.Inverse().Inverse() } // NotNotなので意味なし .CombineLatest() .Select(flags => { var count = 0; foreach (var flag in flags) { if (flag) { ++count; } } return((count & 1) == 1); }) .ToReadOnlyReactiveProperty() .AddTo(CompositeDisposable); }
public override bool Update() { object objA = A.Value; object objB = B.Value; if (objA != null && objB != null) { float numA = (float)objA; float numB = (float)objB; //EB.Debug.Log("Equality test: A:"+numA+" B:"+numB); if (numA == numB) { Check1.Invoke(); } if (numA > numB) { Check2.Invoke(); } if (numA < numB) { Check3.Invoke(); } if (numA >= numB) { Check4.Invoke(); } if (numA <= numB) { Check5.Invoke(); } if (numA != numB) { Check6.Invoke(); } } else { EB.Debug.Log("Equality test failed, item A or B is null - Parent:" + Parent.name); } return(false); }