private void HandleHits(RaycastHit[] hits) { bool wallHit = false; foreach (RaycastHit hit in hits) { Collider collider = hit.collider; if (collider != null) { //Debug.Log("hit.collider: " + hit.collider.transform.name); Pickup pickup = collider.transform.GetComponent <Pickup>(); ILinkInteractable linkInteractable = null; if (pickup != null) { HandlePickupHit(pickup); } else { linkInteractable = collider.transform.GetComponent <ILinkInteractable>(); if (linkInteractable != null) { HandleLinkInteractableHit(linkInteractable); } } if (pickup == null && linkInteractable == null && !wallHit) { if (CheckIfEnvironmentHit(collider)) { if (!_shutdownTimer.Active) { _shutdownTimer.Activate(); } wallHit = true; } } } } if (!wallHit && _shutdownTimer.Active) { _shutdownTimer.Reset(); } }
private void HandleLinkInteractableHit(ILinkInteractable linkInteractable) { linkInteractable.TryInteract(this); }