public override void Raycast(PointerEventData eventData, List <RaycastResult> resultAppendList)
        {
            var count = resultAppendList.Count;

            base.Raycast(eventData, resultAppendList);
            if (count != resultAppendList.Count && !(eventData.IsScrolling() || eventData.dragging))
            {
                return;
            }

            var result = new RaycastResult
            {
                gameObject     = _fallback,
                module         = (BaseRaycaster)this,
                distance       = 0,
                worldPosition  = _fallback.transform.position,
                worldNormal    = _fallback.transform.up,
                screenPosition = eventData.position,
                index          = (float)resultAppendList.Count,
                sortingLayer   = 0,
                sortingOrder   = 0
            };

            resultAppendList.Add(result);
        }
 private static bool UseMouse(bool pressed, bool released, PointerEventData pointerData)
 {
     if (pressed || released || pointerData.IsPointerMoving() || pointerData.IsScrolling())
     {
         return(true);
     }
     return(false);
 }
예제 #3
0
 public void OnScroll(PointerEventData eventData)
 {
     //Debug.Log(eventData.scrollDelta + ", " + eventData.IsScrolling());
     if (eventData.scrollDelta.y < 0 && eventData.IsScrolling())
     {
         if ((windowContents as IPagedWindowContents).GetPageCount() > 1)
         {
             NextPage();
         }
     }
     else if (eventData.scrollDelta.y > 0 && eventData.IsScrolling())
     {
         if ((windowContents as IPagedWindowContents).GetPageCount() > 1)
         {
             PreviousPage();
         }
     }
 }
        public void OnPointerEnter(PointerEventData eventData)
        {
            if (eventData.dragging || eventData.IsScrolling())
            {
                return;
            }

            IsFocused = true;
        }
예제 #5
0
 public void OnScroll(PointerEventData eventData)
 {
     gRayCaster.enabled = !eventData.IsScrolling();
     if (coroutine != null)
     {
         StopCoroutine(coroutine);
     }
     coroutine = StartCoroutine(EnableRaycasterCoroutine(0.2f));
 }
예제 #6
0
    static int IsScrolling(IntPtr L)
    {
        LuaScriptMgr.CheckArgsCount(L, 1);
        PointerEventData obj = LuaScriptMgr.GetNetObject <PointerEventData>(L, 1);
        bool             o   = obj.IsScrolling();

        LuaScriptMgr.Push(L, o);
        return(1);
    }
예제 #7
0
    private void CallLuaFunction(EventTriggerType t, PointerEventData eventData)
    {
        //if (_luaFunction == null)
        //    return;

        int type = 1 << (int)t;

        if ((type & _eventTypes) == 0)
        {
            return;
        }

        if (_luaEventData == null)
        {
            _luaEventData = new LuaEventData();
        }

        _luaEventData.button           = (int)eventData.button;
        _luaEventData.clickCount       = eventData.clickCount;
        _luaEventData.clickTime        = eventData.clickTime;
        _luaEventData.delta_x          = eventData.delta.x;
        _luaEventData.delta_y          = eventData.delta.y;
        _luaEventData.dragging         = eventData.dragging;
        _luaEventData.eligibleForClick = eventData.eligibleForClick;
        _luaEventData.pointerId        = eventData.pointerId;
        _luaEventData.position_x       = eventData.position.x;
        _luaEventData.position_y       = eventData.position.y;
        _luaEventData.pressPosition_x  = eventData.pressPosition.x;
        _luaEventData.pressPosition_y  = eventData.pressPosition.y;
        _luaEventData.scrollDelta_x    = eventData.scrollDelta.x;
        _luaEventData.scrollDelta_y    = eventData.scrollDelta.y;
        _luaEventData.SetIsPointMoving(eventData.IsPointerMoving());
        _luaEventData.SetIsScrolling(eventData.IsScrolling());
        _luaEventData.camera = eventData.enterEventCamera;

        //_luaFunction.Call(type, _luaEventData);

        if (_luaEventData.button >= 0 && _luaEventData.button <= 2)
        {
            eventData.button = (PointerEventData.InputButton)_luaEventData.button;
        }
        eventData.clickCount = _luaEventData.clickCount;
        eventData.clickTime  = _luaEventData.clickTime;
        eventData.delta.Set(_luaEventData.delta_x, _luaEventData.delta_y);

        eventData.dragging         = _luaEventData.dragging;
        eventData.eligibleForClick = _luaEventData.eligibleForClick;
        eventData.pointerId        = _luaEventData.pointerId;

        eventData.position.Set(_luaEventData.position_x, _luaEventData.position_y);
        eventData.pressPosition.Set(_luaEventData.pressPosition_x, _luaEventData.pressPosition_y);
        eventData.scrollDelta.Set(_luaEventData.scrollDelta_x, _luaEventData.scrollDelta_y);
    }
예제 #8
0
        bool UseMouse(bool pressed, bool released, PointerEventData pointerData)
        {
            if (currentInputSource == InputSource.Mouse)
            {
                return(true);
            }

            if (pressed || released || pointerData.IsPointerMoving() || pointerData.IsScrolling())
            {
                currentInputSource = InputSource.Mouse;
                base.eventSystem.SetSelectedGameObject(null, pointerData);
            }

            return(currentInputSource == InputSource.Mouse);
        }
        public void OnPointerUp(PointerEventData eventData)
        {
            if (eventData.dragging || eventData.IsScrolling() || !AnchorSetManager.Instance.IsEnabled)
            {
                TapStarted = false;
                return;
            }

            if (IsFocused && TapStarted)
            {
                OnItemSelected();
            }

            TapStarted = false;
        }
예제 #10
0
        public virtual void OnScroll(PointerEventData data)
        {
            if (!IsActive())
            {
                return;
            }

            EnsureLayoutHasRebuilt();
            UpdateBounds();

            Vector2 delta = data.scrollDelta;

            // Down is positive for scroll events, while in UI system up is positive.
            delta.y *= -1;
            if (vertical && !horizontal)
            {
                if (Mathf.Abs(delta.x) > Mathf.Abs(delta.y))
                {
                    delta.y = delta.x;
                }
                delta.x = 0;
            }
            if (horizontal && !vertical)
            {
                if (Mathf.Abs(delta.y) > Mathf.Abs(delta.x))
                {
                    delta.x = delta.y;
                }
                delta.y = 0;
            }

            if (data.IsScrolling())
            {
                m_Scrolling = true;
            }

            Vector2 position = m_Content.anchoredPosition;

            position += delta * m_ScrollSensitivity;
            if (m_MovementType == MovementType.Clamped)
            {
                position += CalculateOffset(position - m_Content.anchoredPosition);
            }

            SetContentAnchoredPosition(position);
            UpdateBounds();
        }
예제 #11
0
    public static int IsScrolling(IntPtr l)
    {
        int result;

        try
        {
            PointerEventData pointerEventData = (PointerEventData)LuaObject.checkSelf(l);
            bool             b = pointerEventData.IsScrolling();
            LuaObject.pushValue(l, true);
            LuaObject.pushValue(l, b);
            result = 2;
        }
        catch (Exception e)
        {
            result = LuaObject.error(l, e);
        }
        return(result);
    }
예제 #12
0
        public override void OnEnter()
        {
            if (lastPointerEventData == null)
            {
                Finish();
                return;
            }


            if (!clickCount.IsNone)
            {
                clickCount.Value = lastPointerEventData.clickCount;
            }

            if (!clickTime.IsNone)
            {
                clickTime.Value = lastPointerEventData.clickTime;
            }

            if (!delta.IsNone)
            {
                delta.Value = lastPointerEventData.delta;
            }

            if (!dragging.IsNone)
            {
                dragging.Value = lastPointerEventData.dragging;
            }

            if (!inputButton.IsNone)
            {
                inputButton.Value = lastPointerEventData.button;
            }

            if (!eligibleForClick.IsNone)
            {
                eligibleForClick.Value = lastPointerEventData.eligibleForClick;
            }

            if (!enterEventCamera.IsNone)
            {
                enterEventCamera.Value = lastPointerEventData.enterEventCamera.gameObject;
            }

            if (!isPointerMoving.IsNone)
            {
                isPointerMoving.Value = lastPointerEventData.IsPointerMoving();
            }

            if (!isScrolling.IsNone)
            {
                isScrolling.Value = lastPointerEventData.IsScrolling();
            }

            if (!lastPress.IsNone)
            {
                lastPress.Value = lastPointerEventData.lastPress;
            }

            if (!pointerDrag.IsNone)
            {
                pointerDrag.Value = lastPointerEventData.pointerDrag;
            }

            if (!pointerEnter.IsNone)
            {
                pointerEnter.Value = lastPointerEventData.pointerEnter;
            }

            if (!pointerId.IsNone)
            {
                pointerId.Value = lastPointerEventData.pointerId;
            }

            if (!pointerPress.IsNone)
            {
                pointerPress.Value = lastPointerEventData.pointerPress;
            }

            if (!position.IsNone)
            {
                position.Value = lastPointerEventData.position;
            }

            if (!pressEventCamera.IsNone)
            {
                pressEventCamera.Value = lastPointerEventData.pressEventCamera.gameObject;
            }

            if (!pressPosition.IsNone)
            {
                pressPosition.Value = lastPointerEventData.pressPosition;
            }

            if (!rawPointerPress.IsNone)
            {
                rawPointerPress.Value = lastPointerEventData.rawPointerPress;
            }

            if (!scrollDelta.IsNone)
            {
                scrollDelta.Value = lastPointerEventData.scrollDelta;
            }

            if (!used.IsNone)
            {
                used.Value = lastPointerEventData.used;
            }

            if (!useDragThreshold.IsNone)
            {
                useDragThreshold.Value = lastPointerEventData.useDragThreshold;
            }

            if (!worldNormal.IsNone)
            {
                worldNormal.Value = lastPointerEventData.pointerCurrentRaycast.worldNormal;
            }

            if (!worldPosition.IsNone)
            {
                worldPosition.Value = lastPointerEventData.pointerCurrentRaycast.worldPosition;
            }


            Finish();
        }
예제 #13
0
 static bool UseMouse(bool pressed, bool released, PointerEventData pointerData)
 {
     return(pressed || released || pointerData.IsPointerMoving() || pointerData.IsScrolling());
 }
예제 #14
0
 public void OnDrag(PointerEventData data)
 {
     SetDraggedPosition(data);
     data.IsScrolling();
 }
예제 #15
0
        /// <summary>
        /// 更新UIEventData
        /// </summary>
        /// <param name="eventData"></param>
        /// <param name="resultAppendList"></param>
        public void UpdateUIEventData(GameBoxGraphicRaycaster t_Raycaster, PointerEventData t_EventData, List <RaycastResult> t_ResultAppendList)
        {
            //Debug.Log(t_EventData.ToString());

            #region 更新事件参数
            UIEventData.pointerEnter     = t_EventData.pointerEnter;
            UIEventData.pointerPress     = t_EventData.pointerPress;
            UIEventData.rawPointerPress  = t_EventData.rawPointerPress;
            UIEventData.pointerDrag      = t_EventData.pointerDrag;
            UIEventData.hovered          = t_EventData.hovered;
            UIEventData.isPointerMoving  = t_EventData.IsPointerMoving();
            UIEventData.isScrolling      = t_EventData.IsScrolling();
            UIEventData.clickCount       = t_EventData.clickCount;
            UIEventData.lastPress        = t_EventData.lastPress;
            UIEventData.selectedObject   = t_EventData.selectedObject;
            UIEventData.eligibleForClick = t_EventData.eligibleForClick;
            UIEventData.dragging         = t_EventData.dragging;
            UIEventData.useDragThreshold = t_EventData.useDragThreshold;
            UIEventData.enterEventCamera = t_EventData.enterEventCamera;
            UIEventData.pressEventCamera = t_EventData.pressEventCamera;
            UIEventData.position         = t_EventData.position;
            UIEventData.pressPosition    = t_EventData.pressPosition;
            UIEventData.clickTime        = t_EventData.clickTime;
            #endregion

            #region 悬停处理
            if (null == t_EventData.pointerPress && null != t_EventData.pointerEnter && !hoverOnceControl) //悬停进入处理
            {
                //Debug.Log("悬停进入");
                if (null != OnEnterEventHandler)
                {
                    OnEnterEventHandler(t_EventData.pointerEnter, UIEventData);
                }
                UIEventData.lastEnter = t_EventData.pointerEnter;
                hoverOnceControl      = true;
            }

            if (null == t_EventData.pointerPress && null != t_EventData.pointerEnter) //悬停停留处理
            {
                //Debug.Log("悬停停留");
                if (null != OnHoverEventHandler)
                {
                    OnHoverEventHandler(t_EventData.pointerEnter, UIEventData);
                }
            }

            if (null == t_EventData.pointerPress && null == t_EventData.pointerEnter && hoverOnceControl) //悬停移出处理
            {
                //Debug.Log("悬停移出");
                if (null != OnExitEventHandler)
                {
                    OnExitEventHandler(UIEventData.lastEnter, UIEventData);
                }
                hoverOnceControl = false;
            }

            #endregion

            #region  键处理

#if UNITY_STANDALONE_WIN || UNITY_EDITOR
            if (null != t_EventData.pointerPress && !clickOnceControl) //按下和点击处理
            {
                //Debug.Log("按下");
                if (null != OnDownEventHandler)
                {
                    OnDownEventHandler(t_EventData.pointerPress, UIEventData);
                }
                //Debug.Log("点击");
                if (null != OnClickEventHandler)
                {
                    OnClickEventHandler(t_EventData.pointerPress, UIEventData);
                }
                clickOnceControl = true;
            }

            if (null != t_EventData.pointerPress) //按住处理
            {
                //Debug.Log("按住");
                if (null != OnPressEventHandler)
                {
                    OnPressEventHandler(t_EventData.pointerPress, UIEventData);
                }
            }

            if (null != t_EventData.lastPress && clickOnceControl) //抬起处理
            {
                //Debug.Log("抬起");
                if (null != OnUpEventHandler)
                {
                    OnUpEventHandler(t_EventData.lastPress, UIEventData);
                }
                clickOnceControl = false;
            }
#endif

#if (UNITY_ANDROID || UNITY_IPHONE) && !UNITY_EDITOR
            if (0 < Input.touchCount && null != t_EventData.pointerPress && !clickOnceControl) //屏幕有触摸点 && 按下和点击处理
            {
                //Debug.Log("按下");
                if (null != OnDownEventHandler)
                {
                    OnDownEventHandler(t_EventData.pointerPress, UIEventData);
                }
                //Debug.Log("点击");
                if (null != OnClickEventHandler)
                {
                    OnClickEventHandler(t_EventData.pointerPress, UIEventData);
                }
                m_OnPressTouchCount = Input.touchCount; //按下的那一刻的触屏数目
                clickOnceControl    = true;
                info1 = "按下" + Time.deltaTime;
            }

            //按下的时候 可以 其他手指 也可以触摸屏幕
            if (m_OnPressTouchCount <= Input.touchCount && null != t_EventData.pointerPress) //按住处理
            {
                //Debug.Log("按住");
                if (null != OnPressEventHandler)
                {
                    OnPressEventHandler(t_EventData.pointerPress, UIEventData);
                }
                info2           = "按住" + Time.deltaTime + "  " + (Time.realtimeSinceStartup - m_PressRealTime);
                m_PressRealTime = Time.realtimeSinceStartup;
            }

            if (0.01f < (Time.realtimeSinceStartup - m_PressRealTime) && clickOnceControl) //抬起处理
            {
                //Debug.Log("抬起");
                clickOnceControl = false;
                info3            = "抬起" + Time.deltaTime;
                if (null != OnUpEventHandler)
                {
                    OnUpEventHandler(UIEventData.lastPress, UIEventData);
                }
                UIEventData.lastPress = t_EventData.pointerPress; //保存上一次的按下 刷新
                m_OnPressTouchCount   = 0;
            }

            info4 = t_EventData.ToString() + "   \n" + Time.deltaTime.ToString();
#endif


            #endregion

            #region 滑动处理
            if (null != t_EventData.pointerDrag && !dragOnceControl) //开始滑动处理
            {
                //Debug.Log("开始滑动处理");
                if (null != OnBeginDragEventHandler)
                {
                    OnBeginDragEventHandler(t_EventData.pointerDrag, UIEventData);
                }
                UIEventData.lastDrag = t_EventData.pointerDrag;
                dragOnceControl      = true;
            }

            if (null != t_EventData.pointerDrag) //滑动中处理
            {
                //Debug.Log("滑动中处理");
                if (null != OnDragEventHandler)
                {
                    OnDragEventHandler(t_EventData.pointerDrag, UIEventData);
                }
            }

            if (null == t_EventData.pointerDrag && dragOnceControl) //结束滑动处理
            {
                //Debug.Log("结束滑动处理");
                if (null != OnEndDragEventHandler)
                {
                    OnEndDragEventHandler(UIEventData.lastDrag, UIEventData);
                }
                dragOnceControl = false;
            }
            #endregion
        }