void OnDragCard(DragGesture gesture)
    {
        FingerGestures.Finger finger = gesture.Fingers[0];

        if (!GameModelTLMN.DealCardDone)
        {
            return;
        }

        if (gesture.Phase == ContinuousGesturePhase.Started)
        {
            dragObject = gesture.Selection;

            if (dragObject == null)
            {
                return;
            }
            if (dragObject.GetComponent <ECardTexture>() == null)
            {
                return;
            }
            if (gameObject.GetComponent <iTween>() && gameObject.GetComponent <iTween>().isRunning)
            {
                return;
            }
            //set depth to top
            dragObject.GetComponent <ECardTexture>().texture.depth = 15;
            beginPosition = dragObject.transform.localPosition;
            // Lưu lại ngón đang drag
            dragFingerIndex = finger.Index;
        }
        else if (finger.Index == dragFingerIndex)  //Xử lý drag. Đảm bảo chắc là đối tượng đang kéo là đối tượng bạn đang chọn.
        {
            if (finger.Index != 0)
            {
                return;
            }

            if (gesture.Phase == ContinuousGesturePhase.Updated)
            {
                dragObject.gameObject.transform.position = GetWorldPos(gesture.Position);
            }
            else
            {
                //Thiết lập lại khi kết thúc drag
                dragFingerIndex = -1;
                dragObject.transform.localPosition = beginPosition;

                GameObject obj = gesture.PickObject(gameObject.GetComponent <ScreenRaycaster>(), gesture.Position);

                if (obj == null)
                {
                    return;
                }

                if (obj.name == "MainDesk")
                {
                    if (GameModelTLMN.CanDiscard(new List <ECard>(new ECard[] { dragObject.GetComponent <ECardTexture>().card })))
                    {
                        dragObject.gameObject.transform.position = GetWorldPos(gesture.Position);
                        GameModelTLMN.game.OnDiscard(new List <ECard>(new ECard[] { dragObject.GetComponent <ECardTexture>().card }));
                    }
                }
                else
                {
                    ECard dragCard = dragObject.GetComponent <ECardTexture>().card;
                    bool  isChange = false;
                    if (obj.name == "Hand-Left")
                    {
                        GameModelTLMN.YourController.mCardHand.Remove(dragCard);
                        GameModelTLMN.YourController.mCardHand.Insert(0, dragCard);
                        isChange = true;
                    }
                    else if (obj.name == "Hand-Right")
                    {
                        GameModelTLMN.YourController.mCardHand.Remove(dragCard);
                        GameModelTLMN.YourController.mCardHand.Add(dragCard);
                        isChange = true;
                    }
                    else if (obj.GetComponent <ECardTexture>() != null)
                    {
                        int indexOf     = GameModelTLMN.YourController.mCardHand.IndexOf(GameModelTLMN.YourController.mCardHand.Find(c => c == obj.GetComponent <ECardTexture>().card));
                        int indexOfDrag = GameModelTLMN.YourController.mCardHand.IndexOf(GameModelTLMN.YourController.mCardHand.Find(c => c == dragCard));

                        if (indexOfDrag > indexOf && indexOf + 1 < GameModelTLMN.YourController.mCardHand.Count)
                        {
                            indexOf++;
                        }

                        GameModelTLMN.YourController.mCardHand.Remove(dragCard);
                        GameModelTLMN.YourController.mCardHand.Insert(indexOf, dragCard);
                        isChange = true;
                    }

                    if (isChange)
                    {
                        GameModelTLMN.model.GetCardCollection();
                    }
                }
                GameModelTLMN.game.UpdateHand(GameModelTLMN.YourController.slotServer, 0.5f);
                //Debug.Log(obj.name);
            }
        }
    }