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;
                }
            }
        }
示例#2
0
    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();
        }
    }