示例#1
0
        private void LateUpdate()
        {
            // Se estiver pausado, nao atualiza a animacao
            if (_paused)
            {
                return;
            }

            // Atualiza time decorrido
            var realtimeSinceStartup = Time.realtimeSinceStartup;
            var deltaTime            = (realtimeSinceStartup - _elapsedTime) * (ConsiderTimeScale ? Time.timeScale : 1f);

            _elapsedTime = realtimeSinceStartup;

            // Atualiza delay
            if (!_animating)
            {
                _elapsedDelay += deltaTime;
                if (_elapsedDelay >= _delay)
                {
                    _animating = true;

                    if (StartCallback != null)
                    {
                        StartCallback(this);
                    }
                }
            }

            if (_animating)
            {
                // Atualiza time da animacao
                _time += deltaTime / Duration;

                if (_time >= 1f)
                {
                    Completed = true;
                    _time     = 1f;
                }

                // Chama atualizacao
                if (UpdateCallback != null)
                {
                    var time = Ease.ConvertTime(_time);

                    if (Inverse)
                    {
                        time = 1f - time;
                    }

                    UpdateCallback(this, time);
                }

                // Chama encerramento da animacao se necessario
                if (Completed)
                {
                    // Chama o callback de finalizacao com sucesso (se existir)
                    if (DoneCallback != null)
                    {
                        DoneCallback(this);
                    }

                    EndAnimation();
                }
            }
        }