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