private void OnTriggerStay(Collider other)
        {
            var stayingGameObject = other.attachedRigidbody?.gameObject;

            if (stayingGameObject == null ||
                stayingGameObject?.GetComponent <DragAndDropBehaviour>()?.IsDragged == false ||
                stayingGameObject?.GetComponent <Weapon>() == null ||
                _currentGameObjectInTrigger == stayingGameObject)
            {
                return;
            }

            ResetCurrentObject();

            _currentGameObjectInTrigger  = stayingGameObject;
            _currentDragAndDropBehaviour = _currentGameObjectInTrigger.GetComponent <DragAndDropBehaviour>();

            TakeFromBackpack();

            if (_subscribed)
            {
                return;
            }

            _currentDragAndDropBehaviour.OnDrop += OnDropHandler;
            _subscribed = true;
        }
        private void ResetCurrentObject()
        {
            if (_currentDragAndDropBehaviour != null)
            {
                _currentDragAndDropBehaviour.OnDrop -= OnDropHandler;
            }

            _subscribed = false;
            _currentDragAndDropBehaviour = null;
            _currentGameObjectInTrigger  = null;
        }