Beispiel #1
0
    void GetTouchHit(Vector3 _mousePos)
    {
        mCurFrameIsHitUI = NguiEx.IsHitUI(m_IgnoreNgui, m_IgnoreNguiColliderList);

        if (!mCurFrameIsHitUI)
        {
            mRay = m_Camera.ScreenPointToRay(_mousePos);

            if (Physics.Raycast(mRay, out mHit, Mathf.Infinity, m_LayerMask))
            {
                mTouchCurHitListener = mHit.collider.gameObject.GetComponent <InputExListener>();

                if (mTouchCurHitListener != null)
                {
                    isHit = true;
                }
                else
                {
                    isHit = false;
                }
            }
            else
            {
                isHit = false;
            }
        }
        else
        {
            isHit = false;
        }
    }
Beispiel #2
0
    static public InputExListener Get(GameObject go)
    {
        InputExListener listener = go.GetComponent <InputExListener>();

        if (listener != null)
        {
            return(listener);
        }
        else
        {
            listener = go.AddComponent <InputExListener>();
            return(listener);
        }
    }
Beispiel #3
0
    void GetMouseHit(Vector3 _mousePos)
    {
        mMouseCurMousePos = _mousePos;

        if (m_MouseHoverEnableOnlyMove ? (mMouseCurMousePos != mMouseOldMousePos) : true)
        {
            mCurFrameIsHitUI = NguiEx.IsHitUI(m_IgnoreNgui, m_IgnoreNguiColliderList);

            if (!mCurFrameIsHitUI)
            {
                mRay = m_Camera.ScreenPointToRay(mMouseCurMousePos);

                if (Physics.Raycast(mRay, out mHit, Mathf.Infinity, m_LayerMask))
                {
                    mMouseCurHitListener = mHit.collider.gameObject.GetComponent <InputExListener>();

                    if (mMouseCurHitListener != null)
                    {
                        isHit = true;
                    }
                    else
                    {
                        isHit = false;
                    }
                }
                else
                {
                    isHit = false;
                }
            }
            else
            {
                isHit = false;
            }

            if (m_MouseHoverEnableOnlyMove)
            {
                mMouseOldMousePos = mMouseCurMousePos;
            }
        }
    }
Beispiel #4
0
    void TouchMethod()
    {
        mCurTouchCount = Input.touchCount;

        if (mTouchDoubleClickTesting)
        {
            if (mCurTouchDoubleClickTestTime <= m_TouchDoubleClickTime)
            {
                mCurTouchDoubleClickTestTime += Time.deltaTime;
            }
            else
            {
                mTouchDoubleClickTesting = false;
            }
        }

        if (mCurTouchCount >= 1)
        {
            switch (Input.GetTouch(0).phase)
            {
            case TouchPhase.Began:
                #region Begin

                GetTouchHit(Input.GetTouch(0).position);

                if (!mTouchDoubleClickTesting)
                {
                    mCurTouchDoubleClickTestTime = 0f;
                    mTouchDoubleClickTesting     = true;

                    if (isHit)
                    {
                        //Click
                        mTouchCurHitListener.TouchClick();

                        //Press Start
                        if (mTouchOldPressListener != null)
                        {
                            mTouchOldPressListener.TouchPress(false);
                        }

                        mTouchCurHitListener.TouchPress(true);

                        mTouchOldPressListener = mTouchCurHitListener;
                    }
                }
                else
                {
                    if (mCurTouchDoubleClickTestTime <= m_TouchDoubleClickTime)
                    {
                        mTouchDoubleClickTesting = false;

                        GetTouchHit(Input.GetTouch(0).position);

                        if (isHit)
                        {
                            // Double Click
                            mTouchCurHitListener.TouchDoubleClick();
                        }
                        else
                        {
                            if (onTouch_DoubleClickNull != null)
                            {
                                onTouch_DoubleClickNull();
                            }
                        }
                    }
                }

                break;

                #endregion
            case TouchPhase.Stationary:
                #region Stationary

                if (mTouchLongPressTesting)
                {
                    mCurTouchLongPressTime += Time.deltaTime;

                    if (mCurTouchLongPressTime >= m_TouchLongPressTime)
                    {
                        mTouchLongPressTesting = false;

                        if (isHit)
                        {
                            //Long Press
                            mTouchCurHitListener.TouchLongPress();
                            mCurTouchLongPressTime = 0f;
                        }
                    }
                }
                else
                {
                    mTouchLongPressTesting = true;
                    mCurTouchLongPressTime = 0f;
                }
                break;
                #endregion

            case TouchPhase.Moved:
                if (mTouchLongPressTesting)
                {
                    mTouchLongPressTesting = false;
                }
                break;

            case TouchPhase.Ended:
                #region Ended

                if (mTouchOldPressListener != null)
                {
                    mTouchOldPressListener.TouchPress(false);
                    mTouchOldPressListener = null;
                }
                break;
                #endregion
            }
        }
        else
        {
            if (mTouchOldPressListener != null)
            {
                mTouchOldPressListener.TouchPress(false);

                mTouchOldPressListener = null;
            }
        }
    }
Beispiel #5
0
    void MouseMethod()
    {
        GetMouseHit(Input.mousePosition);

        #region Mouse Press
        if (Input.GetMouseButtonDown(0))
        {
            if (isHit)
            {
                mMouseCurHitPressListener = mMouseCurHitListener;

                if (mMouseCurHitPressListener != null)
                {
                    mMouseCurHitPressListener.MouseOnPress(true);
                    mMousePressing = true;
                }
            }
        }
        else if (Input.GetMouseButtonUp(0) || Input.GetMouseButton(1) || Input.GetMouseButton(2))
        {
            if (mMouseCurHitPressListener != null)
            {
                mMouseCurHitPressListener.MouseOnPress(false);
                mMousePressing            = false;
                mMouseCurHitPressListener = null;
            }
        }
        #endregion

        #region Mouse Hover
        if (!mMousePressing && isHit)
        {
            mMouseCurHitHoverListener = mMouseCurHitListener;

            if (mMouseOldHitHoverListener == null)
            {
                mMouseCurHitHoverListener.MouseOnHover(true, mHit);
                mMouseOldHitHoverListener = mMouseCurHitHoverListener;
            }
            else
            {
                if (mMouseCurHitHoverListener != mMouseOldHitHoverListener)
                {
                    mMouseCurHitHoverListener.MouseOnHover(true, mHit);
                    mMouseOldHitHoverListener.MouseOnHover(false, mHit);
                    mMouseOldHitHoverListener = mMouseCurHitHoverListener;
                }
            }
        }
        else
        {
            if (mMouseOldHitHoverListener != null)
            {
                mMouseOldHitHoverListener.MouseOnHover(false, mHit);
                mMouseOldHitHoverListener = null;
            }
        }
        #endregion

        #region Mouse Click  Double Click
        if (mMouseIsTestDoubleClick)
        {
            mMouseTestDoubleClickTime += Time.deltaTime;
            if (mMouseTestDoubleClickTime <= m_MouseDoubleClickTime)
            {
                if (Input.GetMouseButtonDown(0))
                {
                    if (isHit)
                    {
                        mMouseCurDoubleClickHitListener.MouseOnDoubleClick();
                    }
                    else
                    {
                        if (onMouse_DoubleClickNull != null)
                        {
                            onMouse_DoubleClickNull();
                        }
                    }
                }
            }
            else
            {
                mMouseIsTestDoubleClick    = false;
                mMouseIsTestEndDoubleClick = true;
            }
        }

        if (!mMouseIsTestEndDoubleClick)
        {
            if (!mMouseIsTestDoubleClick && Input.GetMouseButtonDown(0))
            {
                if (isHit)
                {
                    mMouseCurClickHitListener = mMouseCurHitListener;

                    mMouseCurClickHitListener.MouseOnClick();
                }


                mMouseCurDoubleClickHitListener = mMouseCurHitListener;

                mMouseIsTestDoubleClick   = true;
                mMouseTestDoubleClickTime = 0f;
            }
        }
        else
        {
            mMouseIsTestEndDoubleClick = false;
        }
        #endregion
    }
Beispiel #6
0
    void Start()
    {
        InputExListener.Get(m_TestGO).onMouseClick += delegate(GameObject _go)
        {
            print("CC " + _go.name);
        };

        InputExListener.Get(m_TestGO).onMouseDoubleClick += delegate(GameObject _go)
        {
            print("DC " + _go.name);
        };

        InputExListener.Get(m_TestGO).onMousePress += delegate(GameObject _go, bool _isPress)
        {
            print("PP" + _go.name + "  " + _isPress.ToString());
        };

        InputExListener.Get(m_TestGO).onMouseHover += delegate(GameObject _go, bool _isPress)
        {
            print("Hover" + _go.name + "  " + _isPress.ToString());
        };

        InputExListener.Get(m_TestGO).onTouchClick += delegate(GameObject _go)
        {
            clickCount++;
            clickName = _go.name;
        };

        InputExListener.Get(m_TestGO).onTouchDoubleClick += delegate(GameObject _go)
        {
            doubleClickCount++;
            clickName = _go.name;
        };

        InputExListener.Get(m_TestGO).onTouchPress += delegate(GameObject _go, bool _isPress)
        {
            if (_isPress)
            {
                pressTCount++;
                clickName = _go.name;
            }
            else
            {
                pressFCount++;
                clickName = _go.name;
            }
        };

        InputExListener.Get(m_TestGO).onTouchLongPress += delegate(GameObject _go)
        {
            longPressCount++;
            clickName = _go.name;
        };


        ///

        InputExListener.Get(m_TestGO2).onTouchClick += delegate(GameObject _go)
        {
            clickCount++;
            clickName = _go.name;
        };

        InputExListener.Get(m_TestGO2).onTouchDoubleClick += delegate(GameObject _go)
        {
            doubleClickCount++;
            clickName = _go.name;
        };

        InputExListener.Get(m_TestGO2).onTouchPress += delegate(GameObject _go, bool _isPress)
        {
            if (_isPress)
            {
                pressTCount++;
                clickName = _go.name;
            }
            else
            {
                pressFCount++;
                clickName = _go.name;
            }
        };

        InputExListener.Get(m_TestGO2).onTouchLongPress += delegate(GameObject _go)
        {
            longPressCount++;
            clickName = _go.name;
        };
    }