public override void ActionIn()
        {
            float screenX = _playerController.playerInputState.X;
            float screenY = _playerController.playerInputState.Y;

            BlockMaskController.Instance.Do(screenX, screenY, _playerController.transform.position, distance);
            RaycastHit hit;
            int        handMaterialId = _playerController.playerAttribute.handMaterialId;

            if (handMaterialId <= 0)
            {
                return;
            }
            Item item = ItemManager.Instance.GetItem(handMaterialId);

            if (item.itemType != (int)ItemType.Block)
            {
                return;
            }
            if (Terrain.RayToWorld(screenX, screenY, _playerController.transform.position,
                                   distance, out hit, oppoMaskLayer))
            {
                WorldPos pos = Terrain.GetWorldPos(hit, true);
                if (hit.collider.GetComponentInParent <ChunkObj>() == null)
                {
                    return;
                }
                if (!Terrain.CheckPosCanPlaced(_playerController.transform, pos))
                {
                    return;
                }
                Block handBlock = new Block((BlockType)item.sceneBlockType, item.sceneBlockExtendId);

                BlockAttributeCalculator calculator = BlockAttributeCalculatorFactory.GetCalculator(handBlock.BlockType);
                if (calculator is BAC_ModelBlock)
                {
                    Vector3 forward  = _gameObjectController.transform.forward;
                    float   degree   = Vector2.Angle(Vector2.right, new Vector2(forward.x, forward.z));
                    byte    extendId = 8;
                    if (degree < 45)
                    {
                        extendId |= 3;
                    }
                    else if (degree > 135)
                    {
                        extendId |= 1;
                    }
                    else if (forward.z > 0)
                    {
                        extendId |= 2;
                    }
                    handBlock = new Block(BlockType.Block_100, extendId);
                }

                int decType = HasActionObjectManager.Instance.plantManager.checkIsPlantSeedling(handMaterialId);
                if (decType != -1)
                {
                    HasActionObjectManager.Instance.plantManager.buildPlant(new Vector3(pos.x, pos.y, pos.z), (DecorationType)decType);
                    return;
                }

                Terrain.SetBlock(pos, handBlock);
            }
        }