Esempio n. 1
0
        protected void CleanUpRaycaster(Pointer3DRaycaster raycaster)
        {
            raycaster.CleanUpRaycast();

            var hoverEventData = raycaster.HoverEventData;

            // hover event
            hoverEventData.pointerCurrentRaycast = default(RaycastResult);

            if (hoverEventData.pointerEnter != null)
            {
                HandlePointerExitAndEnter(hoverEventData, null);
            }

            // buttons event
            for (int i = 0, imax = raycaster.ButtonEventDataList.Count; i < imax; ++i)
            {
                var buttonEventData = raycaster.ButtonEventDataList[i];
                if (buttonEventData == null)
                {
                    continue;
                }

                buttonEventData.Reset();
                buttonEventData.pointerCurrentRaycast = default(RaycastResult);

                ProcessPressUp(buttonEventData);

                if (buttonEventData.pointerEnter != null)
                {
                    HandlePointerExitAndEnter(buttonEventData, null);
                }
            }
        }
Esempio n. 2
0
        protected void CleanUpRaycaster(Pointer3DRaycaster raycaster)
        {
            if (raycaster == null)
            {
                return;
            }

            var hoverEventData = raycaster.HoverEventData;

            if (hoverEventData == null || raycaster.ButtonEventDataList.Count == 0)
            {
                return;
            }

            hoverEventData.Reset();

            // buttons event
            for (int i = 0, imax = raycaster.ButtonEventDataList.Count; i < imax; ++i)
            {
                var buttonEventData = raycaster.ButtonEventDataList[i];
                if (buttonEventData == null || buttonEventData == hoverEventData)
                {
                    continue;
                }

                buttonEventData.Reset();

                if (buttonEventData.eligibleForClick)
                {
                    ProcessPressUp(buttonEventData);
                    HandlePressExitAndEnter(buttonEventData, null);
                }

                if (buttonEventData.pointerEnter != null)
                {
                    if (i == 0)
                    {
                        // perform exit event for hover event data
                        HandlePointerExitAndEnter(buttonEventData, null);
                    }
                    else
                    {
                        buttonEventData.pointerEnter = null;
                    }
                }
            }

            raycaster.CleanUpRaycast();

            for (int i = 0, imax = raycaster.ButtonEventDataList.Count; i < imax; ++i)
            {
                raycaster.ButtonEventDataList[i].pointerPressRaycast   = default(RaycastResult);
                raycaster.ButtonEventDataList[i].pointerCurrentRaycast = default(RaycastResult);
            }
        }