private void OnWorldClick(Vector3 position) { Ray ray = Camera.main.ScreenPointToRay(position); RaycastHit raycastHit; if (Physics.Raycast(ray, out raycastHit, MaxInputRange, TargetLayerMask.value)) { switch (raycastHit.collider.gameObject.layer) { case 11: { if (Vector3.Distance(raycastHit.point, PlayerPosition()) < MaxDropItemRange) { OnDropItemClick.Invoke(raycastHit.collider.gameObject.GetComponent <DropItem>()); } else { OnClickTarget.Invoke(raycastHit.point); OnClickTargetNormal.Invoke(raycastHit.point, Vector3.up); } } break; case 12: { OnPlayerClick.Invoke(); } break; } } }
private void ManageClick() { // The second part of the condition prevents from interacting with the tilemap if we click on UI if (Input.GetMouseButtonDown(0) && EventSystem.current.currentSelectedGameObject == null && !BlockingUI.IsBlocked) { BaseTileData tileClicked = GetTileAtMousePos(); if (tileClicked != null) { if (BuildingManager.Instance.IsInBuildMode) { BuildingManager.Instance.BuildCurrentStructure(HoveredTile); } else { tileClicked.terrainTile.DebugOnClick(); } if (SelectedTile != null) { SelectedTile.SetIsSelected(false); } SelectedTile = tileClicked; SelectedTile.SetIsSelected(true); } else { if (SelectedTile != null) { SelectedTile.SetIsSelected(false); } SelectedTile = null; } OnPlayerClick?.Invoke(); } }