private void Update()
    {
        if (!_enabled)
        {
            return;
        }

        if (_fullReloading)
        {
            Reload();
            return;
        }

        if (Input.GetKeyDown(KeyCode.Space))
        {
            _isActive = !_isActive;

            if (GameEventsManager.OnBoostActivated != null)
            {
                GameEventsManager.OnBoostActivated(_isActive);
            }
        }

        // Consuming if it is active
        if (_isActive)
        {
            Consume();
        }
        else
        {
            Reload();
        }
    }
    private void Consume()
    {
        _currentAmount -= _consumingTimeStep * Time.deltaTime;

        if (_currentAmount <= 0)
        {
            _currentAmount = 0;

            // Deactivates automatically until full reloading
            _isActive = false;

            // Starts full reloading
            _fullReloading = true;

            // Informs that boost speed was deactivated
            if (GameEventsManager.OnBoostActivated != null)
            {
                GameEventsManager.OnBoostActivated(false);
            }
        }

        if (GameEventsManager.OnBoostAmountChanged != null)
        {
            GameEventsManager.OnBoostAmountChanged(_currentAmount / _maxAmount);
        }
    }
    private void Setup(float reloadingStep, float consumingStep, float maxAmount)
    {
        _fullReloading = true;

        _reloadingTimeStep = reloadingStep;
        _consumingTimeStep = consumingStep;
        _maxAmount         = maxAmount;

        _currentAmount = 0;

        _isActive = false;

        if (GameEventsManager.OnBoostAmountChanged != null)
        {
            GameEventsManager.OnBoostAmountChanged(_currentAmount / _maxAmount);
        }

        if (GameEventsManager.OnBoostActivated != null)
        {
            GameEventsManager.OnBoostActivated(false);
        }

        _enabled = true;
    }