// Toggle active/inactive with same event
        public void Interact()
        {
            if (objectRelay != null)
            {
                objectRelay.Message(source);
            }
            else if (isActive && cachedObjectRelay != null)
            {
                cachedObjectRelay.Message(source);
            }

            if (interactable != null)
            {
                interactable.Message(message);
            }
            else if (isActive && cachedInteractable != null)
            {
                cachedInteractable.Message(message);
            }
            else
            {
                return;
            }

            isActive = !isActive;
        }
Exemplo n.º 2
0
 public void Input(ISetSO value)
 {
     if (value == null)
     {
         return;
     }
     value.Message(message);
 }
        // Set active/inactive with different events
        public void Interact(bool value)
        {
            var _source  = value ? gameObject : null;
            var _message = value ? activate : deactivate;

            objectRelay?.Message(_source);
            interactable?.Message(_message);
        }
        public void Pickup()
        {
            var nearby = Physics.OverlapSphere(center, range);

            Debug.Log(nearby.Length);

            foreach (var item in nearby)
            {
                var interactable = item.GetComponent <ISetSO>();
                if (interactable == null)
                {
                    continue;
                }
                itemInHand = interactable;
                break;
            }

            itemInHand?.Message(pickupMessage);
        }
 public void Drop()
 {
     itemInHand?.Message(dropMessage);
     itemInHand = null;
 }