private void Hover(VRTK_UIPointer pointer, List <RaycastResult> results)
        {
            if (pointer.pointerEventData.pointerEnter)
            {
                if (ShouldIgnoreElement(pointer.pointerEventData.pointerEnter, pointer.ignoreCanvasWithTagOrClass))
                {
                    return;
                }

                if (NoValidCollision(pointer, results))
                {
                    ExecuteEvents.ExecuteHierarchy(pointer.pointerEventData.pointerEnter, pointer.pointerEventData, ExecuteEvents.pointerExitHandler);
                    pointer.pointerEventData.hovered.Remove(pointer.pointerEventData.pointerEnter);
                    pointer.pointerEventData.pointerEnter = null;
                }
            }
            else
            {
                foreach (var result in results)
                {
                    if (ShouldIgnoreElement(result.gameObject, pointer.ignoreCanvasWithTagOrClass))
                    {
                        continue;
                    }

                    var target = ExecuteEvents.ExecuteHierarchy(result.gameObject, pointer.pointerEventData, ExecuteEvents.pointerEnterHandler);
                    if (target != null)
                    {
                        var selectable = target.GetComponent <Selectable>();
                        if (selectable)
                        {
                            var noNavigation = new Navigation();
                            noNavigation.mode     = Navigation.Mode.None;
                            selectable.navigation = noNavigation;
                        }

                        pointer.OnUIPointerElementEnter(pointer.SetUIPointerEvent(target, pointer.hoveringElement));
                        pointer.hoveringElement = target;
                        pointer.pointerEventData.pointerCurrentRaycast = result;
                        pointer.pointerEventData.pointerEnter          = target;
                        pointer.pointerEventData.hovered.Add(pointer.pointerEventData.pointerEnter);
                        break;
                    }
                    else
                    {
                        if (result.gameObject != pointer.hoveringElement)
                        {
                            pointer.OnUIPointerElementEnter(pointer.SetUIPointerEvent(result.gameObject, pointer.hoveringElement));
                        }
                        pointer.hoveringElement = result.gameObject;
                    }
                }

                if (pointer.hoveringElement && results.Count == 0)
                {
                    pointer.OnUIPointerElementExit(pointer.SetUIPointerEvent(null, pointer.hoveringElement));
                    pointer.hoveringElement = null;
                }
            }
        }
Beispiel #2
0
 // Token: 0x06001768 RID: 5992 RVA: 0x0007D2F0 File Offset: 0x0007B4F0
 protected virtual void Hover(VRTK_UIPointer pointer, List <RaycastResult> results)
 {
     if (pointer.pointerEventData.pointerEnter)
     {
         this.CheckPointerHoverClick(pointer, results);
         if (!this.ValidElement(pointer.pointerEventData.pointerEnter))
         {
             pointer.pointerEventData.pointerEnter = null;
             return;
         }
         if (this.NoValidCollision(pointer, results))
         {
             ExecuteEvents.ExecuteHierarchy <IPointerExitHandler>(pointer.pointerEventData.pointerEnter, pointer.pointerEventData, ExecuteEvents.pointerExitHandler);
             pointer.pointerEventData.hovered.Remove(pointer.pointerEventData.pointerEnter);
             pointer.pointerEventData.pointerEnter = null;
             return;
         }
     }
     else
     {
         foreach (RaycastResult raycastResult in results)
         {
             if (this.ValidElement(raycastResult.gameObject))
             {
                 GameObject gameObject = ExecuteEvents.ExecuteHierarchy <IPointerEnterHandler>(raycastResult.gameObject, pointer.pointerEventData, ExecuteEvents.pointerEnterHandler);
                 if (gameObject != null)
                 {
                     Selectable component = gameObject.GetComponent <Selectable>();
                     if (component)
                     {
                         component.navigation = new Navigation
                         {
                             mode = Navigation.Mode.None
                         };
                     }
                     pointer.OnUIPointerElementEnter(pointer.SetUIPointerEvent(raycastResult, gameObject, pointer.hoveringElement));
                     pointer.hoveringElement = gameObject;
                     pointer.pointerEventData.pointerCurrentRaycast = raycastResult;
                     pointer.pointerEventData.pointerEnter          = gameObject;
                     pointer.pointerEventData.hovered.Add(pointer.pointerEventData.pointerEnter);
                     break;
                 }
                 if (raycastResult.gameObject != pointer.hoveringElement)
                 {
                     pointer.OnUIPointerElementEnter(pointer.SetUIPointerEvent(raycastResult, raycastResult.gameObject, pointer.hoveringElement));
                 }
                 pointer.hoveringElement = raycastResult.gameObject;
             }
         }
         if (pointer.hoveringElement && results.Count == 0)
         {
             pointer.OnUIPointerElementExit(pointer.SetUIPointerEvent(default(RaycastResult), null, pointer.hoveringElement));
             pointer.hoveringElement = null;
         }
     }
 }
        private bool AttemptClick(VRTK_UIPointer pointer)
        {
            if (pointer.pointerEventData.pointerPress)
            {
                if (!ValidElement(pointer.pointerEventData.pointerPress))
                {
                    return(true);
                }

                if (pointer.pointerEventData.eligibleForClick)
                {
                    if (!IsHovering(pointer))
                    {
                        ExecuteEvents.ExecuteHierarchy(pointer.pointerEventData.pointerPress, pointer.pointerEventData, ExecuteEvents.pointerUpHandler);
                        pointer.pointerEventData.pointerPress = null;
                    }
                }
                else
                {
                    pointer.OnUIPointerElementClick(pointer.SetUIPointerEvent(pointer.pointerEventData.pointerPress));
                    ExecuteEvents.ExecuteHierarchy(pointer.pointerEventData.pointerPress, pointer.pointerEventData, ExecuteEvents.pointerClickHandler);
                    ExecuteEvents.ExecuteHierarchy(pointer.pointerEventData.pointerPress, pointer.pointerEventData, ExecuteEvents.pointerUpHandler);
                    pointer.pointerEventData.pointerPress = null;
                }
                return(true);
            }
            return(false);
        }
Beispiel #4
0
 // Token: 0x0600176D RID: 5997 RVA: 0x0007D640 File Offset: 0x0007B840
 protected virtual bool AttemptClick(VRTK_UIPointer pointer)
 {
     if (!pointer.pointerEventData.pointerPress)
     {
         return(false);
     }
     if (!this.ValidElement(pointer.pointerEventData.pointerPress))
     {
         pointer.pointerEventData.pointerPress = null;
         return(true);
     }
     if (pointer.pointerEventData.eligibleForClick)
     {
         if (!this.IsHovering(pointer))
         {
             ExecuteEvents.ExecuteHierarchy <IPointerUpHandler>(pointer.pointerEventData.pointerPress, pointer.pointerEventData, ExecuteEvents.pointerUpHandler);
             pointer.pointerEventData.pointerPress = null;
         }
     }
     else
     {
         pointer.OnUIPointerElementClick(pointer.SetUIPointerEvent(pointer.pointerEventData.pointerPressRaycast, pointer.pointerEventData.pointerPress, null));
         ExecuteEvents.ExecuteHierarchy <IPointerClickHandler>(pointer.pointerEventData.pointerPress, pointer.pointerEventData, ExecuteEvents.pointerClickHandler);
         ExecuteEvents.ExecuteHierarchy <IPointerUpHandler>(pointer.pointerEventData.pointerPress, pointer.pointerEventData, ExecuteEvents.pointerUpHandler);
         pointer.pointerEventData.pointerPress = null;
     }
     return(true);
 }
    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;
    }
Beispiel #6
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;
        }
Beispiel #7
0
        // Token: 0x06001AA9 RID: 6825 RVA: 0x0008C884 File Offset: 0x0008AA84
        public virtual void OnBeginDrag(PointerEventData eventData)
        {
            this.startPosition = base.transform.position;
            this.startRotation = base.transform.rotation;
            this.startParent   = base.transform.parent;
            this.startCanvas   = base.GetComponentInParent <Canvas>();
            this.canvasGroup.blocksRaycasts = false;
            if (this.restrictToDropZone)
            {
                this.startDropZone = base.GetComponentInParent <VRTK_UIDropZone>().gameObject;
                this.validDropZone = this.startDropZone;
            }
            this.SetDragPosition(eventData);
            VRTK_UIPointer pointer = this.GetPointer(eventData);

            if (pointer != null)
            {
                pointer.OnUIPointerElementDragStart(pointer.SetUIPointerEvent(pointer.pointerEventData.pointerPressRaycast, base.gameObject, null));
            }
        }
Beispiel #8
0
        public virtual void OnBeginDrag(PointerEventData eventData)
        {
            startPosition = transform.position;
            startRotation = transform.rotation;
            startParent   = transform.parent;
            startCanvas   = GetComponentInParent <Canvas>();
            canvasGroup.blocksRaycasts = false;

            if (restrictToDropZone)
            {
                startDropZone = GetComponentInParent <VRTK_UIDropZone>().gameObject;
                validDropZone = startDropZone;
            }

            SetDragPosition(eventData);
            VRTK_UIPointer pointer = GetPointer(eventData);

            if (pointer != null)
            {
                pointer.OnUIPointerElementDragStart(pointer.SetUIPointerEvent(pointer.pointerEventData.pointerPressRaycast, gameObject));
            }
        }
        protected virtual void Hover(VRTK_UIPointer pointer, List <RaycastResult> results)
        {
            if (pointer.pointerEventData.pointerEnter != null)
            {
                CheckPointerHoverClick(pointer, results);
                if (!ValidElement(pointer.pointerEventData.pointerEnter))
                {
                    pointer.pointerEventData.pointerEnter = null;
                    return;
                }

                if (NoValidCollision(pointer, results))
                {
                    ExecuteEvents.ExecuteHierarchy(pointer.pointerEventData.pointerEnter, pointer.pointerEventData, ExecuteEvents.pointerExitHandler);
                    pointer.pointerEventData.hovered.Remove(pointer.pointerEventData.pointerEnter);
                    pointer.pointerEventData.pointerEnter = null;
                }
            }
            else
            {
                for (int i = 0; i < results.Count; i++)
                {
                    RaycastResult result = results[i];
                    if (!ValidElement(result.gameObject))
                    {
                        continue;
                    }

                    GameObject target = ExecuteEvents.ExecuteHierarchy(result.gameObject, pointer.pointerEventData, ExecuteEvents.pointerEnterHandler);
                    //target = (target == null ? result.gameObject : target);

                    if (target != null)
                    {
                        Selectable selectable = target.GetComponent <Selectable>();
                        if (selectable != null)
                        {
                            Navigation noNavigation = new Navigation();
                            noNavigation.mode     = Navigation.Mode.None;
                            selectable.navigation = noNavigation;
                        }

                        if (pointer.hoveringElement != null && pointer.hoveringElement != target)
                        {
                            pointer.OnUIPointerElementExit(pointer.SetUIPointerEvent(result, null, pointer.hoveringElement));
                        }

                        pointer.OnUIPointerElementEnter(pointer.SetUIPointerEvent(result, target, pointer.hoveringElement));
                        pointer.hoveringElement = target;
                        pointer.pointerEventData.pointerCurrentRaycast = result;
                        pointer.pointerEventData.pointerEnter          = target;
                        pointer.pointerEventData.hovered.Add(pointer.pointerEventData.pointerEnter);
                        break;
                    }

                    if (result.gameObject != pointer.hoveringElement)
                    {
                        pointer.OnUIPointerElementEnter(pointer.SetUIPointerEvent(result, result.gameObject, pointer.hoveringElement));
                    }
                    pointer.hoveringElement = result.gameObject;
                }

                if (pointer.hoveringElement && results.Count == 0)
                {
                    pointer.OnUIPointerElementExit(pointer.SetUIPointerEvent(new RaycastResult(), null, pointer.hoveringElement));
                    pointer.hoveringElement = null;
                }
            }
        }
Beispiel #10
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;
        }
        private void Hover(VRTK_UIPointer pointer, List<RaycastResult> results)
        {
            if (pointer.pointerEventData.pointerEnter)
            {
                if (ShouldIgnoreElement(pointer.pointerEventData.pointerEnter, pointer.ignoreCanvasWithTagOrClass, pointer.canvasTagOrScriptListPolicy))
                {
                    return;
                }

                if (NoValidCollision(pointer, results))
                {
                    ExecuteEvents.ExecuteHierarchy(pointer.pointerEventData.pointerEnter, pointer.pointerEventData, ExecuteEvents.pointerExitHandler);
                    pointer.pointerEventData.hovered.Remove(pointer.pointerEventData.pointerEnter);
                    pointer.pointerEventData.pointerEnter = null;
                }
            }
            else
            {
                foreach (var result in results)
                {
                    if (ShouldIgnoreElement(result.gameObject, pointer.ignoreCanvasWithTagOrClass, pointer.canvasTagOrScriptListPolicy))
                    {
                        continue;
                    }

                    var target = ExecuteEvents.ExecuteHierarchy(result.gameObject, pointer.pointerEventData, ExecuteEvents.pointerEnterHandler);
                    if (target != null)
                    {
                        var selectable = target.GetComponent<Selectable>();
                        if (selectable)
                        {
                            var noNavigation = new Navigation();
                            noNavigation.mode = Navigation.Mode.None;
                            selectable.navigation = noNavigation;
                        }

                        pointer.OnUIPointerElementEnter(pointer.SetUIPointerEvent(target, pointer.hoveringElement));
                        pointer.hoveringElement = target;
                        pointer.pointerEventData.pointerCurrentRaycast = result;
                        pointer.pointerEventData.pointerEnter = target;
                        pointer.pointerEventData.hovered.Add(pointer.pointerEventData.pointerEnter);
                        break;
                    }
                    else
                    {
                        if (result.gameObject != pointer.hoveringElement)
                        {
                            pointer.OnUIPointerElementEnter(pointer.SetUIPointerEvent(result.gameObject, pointer.hoveringElement));
                        }
                        pointer.hoveringElement = result.gameObject;
                    }
                }

                if (pointer.hoveringElement && results.Count == 0)
                {
                    pointer.OnUIPointerElementExit(pointer.SetUIPointerEvent(null, pointer.hoveringElement));
                    pointer.hoveringElement = null;
                }
            }
        }