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);
        }
Пример #2
0
    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);
    }