private void Update() { if (!acceptInput) { return; } #if UNITY_EDITOR if (selectedReflector) { Vector3 mouseWorldPos = mainCamera.ScreenToWorldPoint(Input.mousePosition); mouseWorldPos.z = selectedReflector.transform.position.z; selectedReflector.transform.position = mouseWorldPos; Ray mouseRay = mainCamera.ScreenPointToRay(Input.mousePosition); // Highlight of Grid Outline if (Physics.Raycast(mouseRay, out RaycastHit hit, Mathf.Abs(mainCamera.transform.position.z), reflectorPlacementBoxLayerMask)) { Proto_Grid gridOutline = hit.collider.GetComponent <Proto_Grid>(); if (gridOutline && !gridOutline.IsOccupied) { if (highlightedGrid != null && highlightedGrid != gridOutline) { highlightedGrid.ShowGrid(false); } gridOutline.ShowGrid(true); highlightedGrid = gridOutline; } } // Placement of Reflector if (Input.GetMouseButtonDown(0)) { if (highlightedGrid) { selectedReflector.transform.position = highlightedGrid.transform.position; selectedReflector.Build(); selectedReflector.OccupyGridOutline(highlightedGrid); highlightedGrid.OccupyReflector(selectedReflector); highlightedGrid.ShowGrid(false); selectedReflector = null; highlightedGrid = null; } } } else { if (Input.GetMouseButtonDown(0)) { Ray mouseRay = mainCamera.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(mouseRay, out RaycastHit hit, Mathf.Abs(mainCamera.transform.position.z), reflectorLayerMask)) { Reflector reflector = hit.transform.GetComponentInParent <Reflector>(); if (reflector && reflector.Interactable) { reflector.OccupiedGridOutline.OccupyReflector(null); reflector.OccupyGridOutline(null); SelectReflector(reflector); } } } else if (Input.GetMouseButtonDown(1)) { Ray mouseRay = mainCamera.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(mouseRay, out RaycastHit hit, Mathf.Abs(mainCamera.transform.position.z), reflectorLayerMask)) { Reflector reflector = hit.transform.GetComponentInParent <Reflector>(); if (reflector && reflector.Interactable) { reflector.Rotate90(); } } } } #elif UNITY_IOS || UNITY_ANDROID #endif }
public void OccupyGridOutline(Proto_Grid gridOutline) { OccupiedGridOutline = gridOutline; }
public void HighlightGridOutline(Proto_Grid gridOutline) { highlightedGrid = gridOutline; }