Пример #1
0
    public override void OnEndDrag(PointerEventData eventData)
    {
        canvasGroup.blocksRaycasts = true;
        dragTransform       = null;
        transform.position += (transform.forward * forwardOffset);
        bool validDragEnd = true;

        if (restrictToDropZone)
        {
            if (validDropZone != null && validDropZone != startDropZone)
            {
                transform.SetParent(validDropZone.transform);
            }
            else
            {
                ResetElement();
                validDragEnd = false;
            }
        }

        Canvas destinationCanvas = (eventData.pointerEnter != null ? eventData.pointerEnter.GetComponentInParent <Canvas>() : null);

        if (restrictToOriginalCanvas)
        {
            if (destinationCanvas != null && destinationCanvas != startCanvas)
            {
                ResetElement();
                validDragEnd = false;
            }
        }

        if (destinationCanvas == null)
        {
            //We've been dropped off of a canvas
            ResetElement();
            validDragEnd = false;
            Destroy(gameObject);
        }

        if (validDragEnd)
        {
            VRTK.VRTK_UIPointer pointer = GetPointer(eventData);
            if (pointer != null)
            {
                pointer.OnUIPointerElementDragEnd(pointer.SetUIPointerEvent(pointer.pointerEventData.pointerPressRaycast, gameObject));
            }
            OnDraggableItemDropped(SetEventPayload(validDropZone));
        }

        validDropZone = null;
        startParent   = null;
        startCanvas   = null;
    }
Пример #2
0
        // Token: 0x06001AAB RID: 6827 RVA: 0x0008C940 File Offset: 0x0008AB40
        public virtual void OnEndDrag(PointerEventData eventData)
        {
            this.canvasGroup.blocksRaycasts = true;
            this.dragTransform       = null;
            base.transform.position += base.transform.forward * this.forwardOffset;
            bool flag = true;

            if (this.restrictToDropZone)
            {
                if (this.validDropZone != null && this.validDropZone != this.startDropZone)
                {
                    base.transform.SetParent(this.validDropZone.transform);
                }
                else
                {
                    this.ResetElement();
                    flag = false;
                }
            }
            Canvas x = (eventData.pointerEnter != null) ? eventData.pointerEnter.GetComponentInParent <Canvas>() : null;

            if (this.restrictToOriginalCanvas && x != null && x != this.startCanvas)
            {
                this.ResetElement();
                flag = false;
            }
            if (x == null)
            {
                this.ResetElement();
                flag = false;
            }
            if (flag)
            {
                VRTK_UIPointer pointer = this.GetPointer(eventData);
                if (pointer != null)
                {
                    pointer.OnUIPointerElementDragEnd(pointer.SetUIPointerEvent(pointer.pointerEventData.pointerPressRaycast, base.gameObject, null));
                }
                this.OnDraggableItemDropped(this.SetEventPayload(this.validDropZone));
            }
            this.validDropZone = null;
            this.startParent   = null;
            this.startCanvas   = null;
        }
Пример #3
0
        public virtual void OnEndDrag(PointerEventData eventData)
        {
            canvasGroup.blocksRaycasts = true;
            dragTransform       = null;
            transform.position += (transform.forward * forwardOffset);
            bool validDragEnd = true;

            if (restrictToDropZone)
            {
                if (validDropZone != null && validDropZone != startDropZone)
                {
                    // Instantiate this object and attach it instead of.
                    if (duplicateOnDrag)
                    {
                        // One clone can be created at the same time, do not clone this item.
                        if (oneCloneAtMost && GetComponent <FoodState>() && GetComponent <FoodState>().clone != null)
                        {
                            ResetElement();
                            validDragEnd = false;
                        }
                        else if (oneCloneAtMost && GetComponent <FoodStateGroup>() && GetComponent <FoodStateGroup>().clone != null)
                        {
                            ResetElement();
                            validDragEnd = false;
                        }


                        // Clone this item
                        else
                        {
                            GameObject cloneObject = GameObject.Instantiate(this.gameObject);

                            // Clone FoodState Component
                            if (cloneObject.GetComponent <FoodState>())
                            {
                                cloneObject.GetComponent <FoodState>().Clone(GetComponent <FoodState>());
                            }

                            // Clone FoodGroup Component
                            else if (cloneObject.GetComponent <FoodStateGroup>())
                            {
                                cloneObject.GetComponent <FoodStateGroup>().Clone(GetComponent <FoodStateGroup>());
                            }

                            // Clone PseudoAction Component
                            else if (cloneObject.GetComponent <PseudoAction>())
                            {
                                cloneObject.GetComponent <PseudoAction>().Clone(GetComponent <PseudoAction>());
                            }

                            // Set new clone as cannot be duplicated, and can be removed by dropping to empty zone.
                            if (cloneObject.GetComponent <VRTK_UIDraggableItem>().cantDuplicateAfterDrag)
                            {
                                cloneObject.GetComponent <VRTK_UIDraggableItem>().duplicateOnDrag       = false;
                                cloneObject.GetComponent <VRTK_UIDraggableItem>().removeOnDropEmptyZone = true;
                            }

                            // Set new clone as cloneable again
                            else
                            {
                                cloneObject.GetComponent <VRTK_UIDraggableItem>().duplicateOnDrag = true;
                            }

                            ///////// RECIPE UI SPECIFIC CODE // TODO: FIX THIS
                            cloneObject.transform.SetParent(validDropZone.transform, false);
                            cloneObject.GetComponent <RectTransform>().anchoredPosition3D = Vector3.zero;
                            cloneObject.GetComponent <RectTransform>().localRotation      = Quaternion.Euler(Vector3.zero);

                            cloneObject.GetComponent <VRTK_UIDraggableItem>().enabled = true;
                            /////////

                            ResetElement();
                            validDragEnd = false;
                        }
                    }

                    else
                    {
                        transform.SetParent(validDropZone.transform);
                    }
                }
                else
                {
                    ResetElement();
                    validDragEnd = false;
                }
            }

            Canvas destinationCanvas = (eventData.pointerEnter != null ? eventData.pointerEnter.GetComponentInParent <Canvas>() : null);

            if (restrictToOriginalCanvas)
            {
                if (destinationCanvas != null && destinationCanvas != startCanvas)
                {
                    ResetElement();
                    validDragEnd = false;
                }
            }

            if (destinationCanvas == null)
            {
                //////// RECIPE UI SPECIFIC CODE // TODO: FIX THIS
                if (removeOnDropEmptyZone)
                {
                    Step s = null;
                    if (gameObject.transform.parent.parent.GetComponent <Step>())
                    {
                        s = gameObject.transform.parent.parent.GetComponent <Step>();
                    }

                    if (GetComponent <Text>())
                    {
                        Destroy(GetComponent <Text>());
                    }

                    Destroy(gameObject);

                    if (s != null)
                    {
                        s.StepChanged();
                    }
                }
                ///////////

                //We've been dropped off of a canvas
                ResetElement();
                validDragEnd = false;
            }

            if (validDragEnd)
            {
                VRTK_UIPointer pointer = GetPointer(eventData);
                if (pointer != null)
                {
                    pointer.OnUIPointerElementDragEnd(pointer.SetUIPointerEvent(pointer.pointerEventData.pointerPressRaycast, gameObject));
                }
                OnDraggableItemDropped(SetEventPayload(validDropZone));
            }

            validDropZone = null;
            startParent   = null;
            startCanvas   = null;
        }