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; }