Exemple #1
0
        public void SetOff()
        {
            InitCheck();

            SetValue(0f);

            _currentState = EAnimateOnOffState.Off;
        }
Exemple #2
0
        public void SetOn()
        {
            InitCheck();

            SetValue(1f);

            _currentState = EAnimateOnOffState.On;
        }
Exemple #3
0
        public void SetOff()
        {
            CurrentState = EAnimateOnOffState.Off;
            gameObject.SetActive(false);

            foreach (var a in _animations)
            {
                a.SetOff();
            }
        }
Exemple #4
0
        public void Init()
        {
            if (_initialised) // do nothing if initialisation has already happened - prevents infinite recursion
            {
                return;
            }

            _initialised = true;
            CurrentState = EAnimateOnOffState.Off;

            var subGroups = GetComponentsInChildren <AnimateOnOffGroup>();

            // make sure any child groups are initialised before this one - doesn't matter if they're already initialised at this point
            foreach (var group in subGroups)
            {
                group.Init();
            }

            _animations = new List <IAnimateOnOff>();

            foreach (var a in GetComponentsInChildren <IAnimateOnOff>())
            {
                if (ReferenceEquals(a, this) || a.IgnoreAnimationGroup || a.Group != null)
                {
                    continue;
                }

                a.Group = this;

                _longestOn  = Mathf.Max(_longestOn, a.OnDuration);
                _longestOff = Mathf.Max(_longestOff, a.OffDuration);

                _animations.Add(a);
            }

            switch (_awakeState)
            {
            default:
                SetOn();
                break;

            case EAnimateOnOffState.Off:
                SetOff();
                break;

            case EAnimateOnOffState.AnimatingOn:
                AnimateOn();
                break;

            case EAnimateOnOffState.AnimatingOff:
                AnimateOff();
                break;
            }
        }
Exemple #5
0
        public IPromise AnimateOff(bool unscaled = false)
        {
            InitCheck();

            _currentState = EAnimateOnOffState.AnimatingOff;

            return(CoroutineExtensions.Tween(
                       Duration,
                       f => SetValue(1f - f),
                       Easing.Reverse(EaseType), unscaled)
                   .ThenWaitForSeconds(Delay, unscaled)
                   .ThenDo(() => _currentState = EAnimateOnOffState.Off));
        }
Exemple #6
0
        public IPromise AnimateOn(bool unscaled = false)
        {
            InitCheck();

            _currentState = EAnimateOnOffState.AnimatingOn;

            return(CoroutineExtensions.WaitForSeconds(Delay, unscaled)
                   .ThenTween(
                       Duration,
                       SetValue,
                       EaseType, unscaled)
                   .ThenDo(() => _currentState = EAnimateOnOffState.On));
        }
Exemple #7
0
        public virtual IPromise AnimateOn(bool unscaled = false)
        {
            if (CheckIfAnimating())
            {
                return(Promise.Resolved());
            }

            if (CurrentState == EAnimateOnOffState.On)
            {
                return(Promise.Resolved());
            }

            CurrentState = EAnimateOnOffState.AnimatingOn;

            gameObject.SetActive(true);

            return(CoroutineExtensions.WaitForSeconds(OnDelay, unscaled)
                   .ThenAll(() => GetAnimateOnPromises(unscaled))
                   .ThenDo(() => CurrentState = EAnimateOnOffState.On));
        }