/// <summary>
        /// Drop pickupable prefab on ground.
        /// </summary>
        /// <param name="blockType">type of material</param>
        /// <param name="position">doppped item position (in world space)</param>
        /// <param name="amount">dropped item count</param>
        /// <param name="velocity">velocity multipler (camera.forward * velocity)</param>
        /// <param name="rotate">should object be rotated same as camera</param>
        public void DropItem(BlockType blockType, Vector3 position, int amount = 1, float velocity = 0f, bool rotate = false)
        {
            if (blockType == BlockType.AIR)
            {
                return;
            }

            Chunk       chunk       = World.GetChunk(position.x, position.z);
            DroppedItem droppedItem = Instantiate(materialItemPrefab, position, Quaternion.identity, chunk.transform).GetComponent <DroppedItem>();

            PlayerController.InventorySystem.GetItemData(blockType, (item) => droppedItem.SetInventoryItem(item));
            droppedItem.Amount = amount;

            if (velocity != 0 && droppedItem.TryGetComponent(out Rigidbody rigidbody))
            {
                rigidbody.AddForce(MouseLook.cameraTransform.forward * velocity, ForceMode.Impulse);
                if (rotate)
                {
                    droppedItem.transform.forward = MouseLook.cameraTransform.forward;
                }
            }

            MeshFilter meshFilter = droppedItem.GetComponent <MeshFilter>();

            MeshUtils.CreateBlockCube(meshFilter.mesh, blockType, 0.75f);
            meshFilter.ClearMeshOnDestroy();
        }