Exemple #1
0
        private void LetterGestureUpdated(GestureRecognizer gesture)
        {
            Debug.Log("Pan state " + gesture.State);

            if (gesture.State == GestureRecognizerState.Began)
            {
                PointerEventData p = new PointerEventData(EventSystem.current);
                p.position = new Vector2(gesture.FocusX, gesture.FocusY);
                raycast.Clear();
                EventSystem.current.RaycastAll(p, raycast);
                foreach (RaycastResult result in raycast)
                {
                    if (result.gameObject.name.IndexOf("LetterPrefab", System.StringComparison.OrdinalIgnoreCase) >= 0)
                    {
                        // we have a letter!
                        Vector2 dragPos = FingersUtility.ScreenToCanvasPoint(canvas, new Vector2(gesture.FocusX, gesture.FocusY));
                        draggingLetter = result.gameObject.transform;
                        dragOffset     = (Vector2)draggingLetter.position - dragPos;
                        break;
                    }
                }
                if (draggingLetter == null)
                {
                    gesture.Reset();
                }
            }
            else if (gesture.State == GestureRecognizerState.Executing)
            {
                Vector2 dragPos = FingersUtility.ScreenToCanvasPoint(canvas, new Vector2(gesture.FocusX, gesture.FocusY));
                Vector3 pos     = draggingLetter.transform.position;

                // don't mess with the z
                pos.x = dragPos.x + dragOffset.x;
                pos.y = dragPos.y + dragOffset.y;
                draggingLetter.transform.position = pos;
            }
            else if (gesture.State == GestureRecognizerState.Ended)
            {
                draggingLetter = null;
            }
        }
Exemple #2
0
        private void LetterGestureUpdated(GestureRecognizer gesture)
        {
            //Debug.Log("Pan state " + gesture.State);

            if (gesture.State == GestureRecognizerState.Began)
            {
                PointerEventData p = new PointerEventData(EventSystem.current);
                p.position = new Vector2(gesture.FocusX, gesture.FocusY);
                raycast.Clear();
                EventSystem.current.RaycastAll(p, raycast);
                foreach (RaycastResult result in raycast)
                {
                    if (result.gameObject.name.IndexOf("BlockDraggable", System.StringComparison.OrdinalIgnoreCase) >= 0)
                    {
                        print("DRAGGABLE FOUND BOUNDARIES");
                        // we have a letter!
                        this.boundaries = this.blockDragManager.NotifyDraggingBlockStart(result.gameObject);
                        //print("BOUNDARIES:" + this.boundaries[0]);
                        //print("BOUNDARIES:" + this.boundaries[1]);
                        Vector2 dragPos = FingersUtility.ScreenToCanvasPoint(canvas, new Vector2(gesture.FocusX, gesture.FocusY));
                        draggingLetter = result.gameObject.transform;
                        dragOffset     = (Vector2)draggingLetter.position - dragPos;
                        break;
                    }
                }
                if (draggingLetter == null)
                {
                    gesture.Reset();
                }
            }
            else if (gesture.State == GestureRecognizerState.Executing)
            {
                this.boundaries = this.blockDragManager.CalculateBlockBoundaries(this.draggingLetter.gameObject);


                Vector2 dragPos = FingersUtility.ScreenToCanvasPoint(canvas, new Vector2(gesture.FocusX, gesture.FocusY));
                Vector3 pos     = draggingLetter.transform.position;

                // don't mess with the z
                float newPosition = dragPos.x + dragOffset.x;
                float containerX  = this.container.GetComponent <RectTransform>().position.x;

                if (newPosition >= this.boundaries[0] + containerX && newPosition <= this.boundaries[1] + containerX)
                {
                    this.lastDelta = newPosition - pos.x;
                    pos.x          = newPosition;
                    //pos.y = dragPos.y + dragOffset.y;

                    draggingLetter.transform.position = pos;
                }
                else
                {
                    //print("DRAGGABLE BOUNDARIES BLOCK");
                    //print("BOUNDARIES:" + this.boundaries[0]);
                    //print("BOUNDARIES:" + this.boundaries[1]);
                }
            }
            else if (gesture.State == GestureRecognizerState.Ended)
            {
                this.blockDragManager.NotifyDraggingBlockEnd(draggingLetter.gameObject, this.lastDelta);

                GameObject gameObject = draggingLetter.gameObject;

                draggingLetter = null;
            }
        }