//Call the HouseOutlineController' function to hide the object outline private void HideOutline() { if (prevController != null) { prevController.HideObject(); prevController = null; } }
/// <summary> /// A function to check is it the raycast has hit the colliders of the interactable item /// If yes, the prompt key will show. /// It will only check if there is no any popup panel show /// </summary> private void HandleLookAtRay() { if (!EventSystem.current.IsPointerOverGameObject()) { Ray ray = _camera.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit, distance)) { if (hit.collider.CompareTag("Doors") || hit.collider.CompareTag("cockroach") || hit.collider.CompareTag("smallRoomKey") || hit.collider.CompareTag("Interactable") || hit.collider.CompareTag("bed") || hit.collider.CompareTag("powerSwitch") || hit.collider.CompareTag("cailingFanSwitch") || hit.collider.tag == "missiingItems") { if (operateTooltip.activeSelf == false) { promptScript.ShowPrompt = true; } else { promptScript.ShowPrompt = false; } currentController = hit.collider.GetComponent <HouseOutlineController>(); if (prevController != currentController) { HideOutline(); ShowOutline(); } prevController = currentController; if (Input.GetKeyDown(KeyCode.E)) { hit.collider.SendMessage("Operate", SendMessageOptions.DontRequireReceiver); } } else if (hit.collider.CompareTag("newspaper")) { if (lightOn == true) { if (operateTooltip.activeSelf == false && isReadingNews == false) { promptScript.ShowPrompt = true; } else { promptScript.ShowPrompt = false; } currentController = hit.collider.GetComponent <HouseOutlineController>(); if (prevController != currentController) { HideOutline(); ShowOutline(); } prevController = currentController; if (Input.GetKeyDown(KeyCode.E)) { if (lightOn == true && !isReadingNews) { promptScript.ShowPrompt = false; hit.collider.SendMessage("readNewspaper", SendMessageOptions.DontRequireReceiver); isReadingNews = !isReadingNews; } else if (isReadingNews) { hit.collider.SendMessage("stopReadNewspaper", SendMessageOptions.DontRequireReceiver); } } } } else { HideOutline(); promptScript.ShowPrompt = false; } } else { HideOutline(); promptScript.ShowPrompt = false; } } }
// Start is called before the first frame update void Start() { MissingItemController = GetComponent <HouseOutlineController>(); _renderer = gameObject.GetComponent <MeshRenderer>(); }