示例#1
0
    public void UpdateMouse()
    {
        if (widgets == null)
        {
            return;
        }

        int      i = 0;
        OGWidget w;

        // Click
        if (Input.GetMouseButtonDown(0) || Input.GetMouseButtonDown(2) || GetTouch() == TouchPhase.Began)
        {
            OGWidget topWidget = null;

            for (i = 0; i < mouseOver.Count; i++)
            {
                w = mouseOver[i];

                if ((w.GetType() != typeof(OGScrollView) || (w as OGScrollView).touchControl) && (topWidget == null || w.transform.position.z < topWidget.transform.position.z) && w.isSelectable)
                {
                    topWidget = w;
                }
            }

            if (downWidget && downWidget != topWidget)
            {
                downWidget.OnMouseCancel();
            }

            if (topWidget != null && topWidget.CheckMouseOver() && !topWidget.isDisabled)
            {
                topWidget.OnMouseDown();
                downWidget = topWidget;
            }

            // Release
        }
        else if (Input.GetMouseButtonUp(0) || Input.GetMouseButtonUp(2) || GetTouch() == TouchPhase.Ended || GetTouch() == TouchPhase.Canceled)
        {
            if (downWidget)
            {
                // Draggable
                if (downWidget.resetAfterDrag && downWidget.GetType() != typeof(OGScrollView))
                {
                    downWidget.transform.position = downWidget.dragOrigPos;
                    downWidget.dragOffset         = Vector3.zero;
                    downWidget.dragOrigPos        = Vector3.zero;
                }

                // Mouse over
                if ((downWidget.CheckMouseOver() || GetTouch() == TouchPhase.Ended) && !downWidget.isDisabled && downWidget.CheckMouseOver())
                {
                    downWidget.OnMouseUp();

                    // Mouse out
                }
                else
                {
                    downWidget.OnMouseCancel();
                }
            }

            // Dragging
        }
        else if (GetDragging() != Vector2.zero)
        {
            if (downWidget != null && !downWidget.isDisabled)
            {
                if (downWidget.clipTo && downWidget.clipTo.GetType() == typeof(OGScrollView) && (downWidget.clipTo as OGScrollView).touchControl)
                {
                    OGWidget thisWidget = downWidget;
                    thisWidget.OnMouseCancel();
                    downWidget = thisWidget.clipTo;
                }

                downWidget.OnMouseDrag();

                if (downWidget.isDraggable && downWidget.GetType() != typeof(OGScrollView))
                {
                    Vector3 mousePos = Input.mousePosition;
                    mousePos.y = screenHeight - mousePos.y;

                    if (downWidget.dragOffset == Vector3.zero)
                    {
                        if (downWidget.resetAfterDrag)
                        {
                            downWidget.dragOrigPos = downWidget.transform.position;
                        }

                        downWidget.dragOffset = downWidget.transform.position - mousePos;
                    }

                    Vector3 newPos = downWidget.transform.position;
                    newPos = mousePos + downWidget.dragOffset;
                    downWidget.transform.position = newPos;
                }
            }
        }

        // Escape key
        if (Input.GetKeyDown(KeyCode.Escape))
        {
            if (downWidget != null)
            {
                downWidget.OnMouseCancel();
                ReleaseWidget();
            }
        }
    }