protected override void _Step()
        {
            if (m_pauseInputTime <= 0.0f)
            {
                IssueInputs();
            }
            else
            {
                countDownTimer?.AddTime(m_bonusTimeValue * Time.deltaTime);
                m_pauseInputTime -= Time.deltaTime;
            }
            Vector3 tempVelocity = calculateTempVelocity();

            // Collision!
            float   distance  = speed * Time.deltaTime;
            Vector2 direction = tempVelocity.normalized;

            velocity = direction * distance;

            CheckLeftRight(direction.x, velocity.x);
            CheckUpDown(direction.y, velocity.y);

            transform.position += velocity;

            CheckPointOfInterests();

            // Sprite stuff!!!
            if (Maths.EqualZero(direction.y) && !Maths.EqualZero(direction.x))
            {
                if (Maths.EqualZero(animator.speed))
                {
                    animator.speed = 1f;
                }

                if (direction.x >= 0f)
                {
                    spriteRenderer.flipX = false;
                    animator.Play("Side");
                }
                else
                {
                    spriteRenderer.flipX = true;
                    animator.Play("Side");
                }
            }
            else if (!Maths.EqualZero(direction.y))
            {
                if (Maths.EqualZero(animator.speed))
                {
                    animator.speed = 1f;
                }

                if (direction.y >= 0f)
                {
                    animator.Play("Down");
                }
                else
                {
                    animator.Play("Up");
                }
            }
            else
            {
                animator.speed = 0f;
            }
        }