示例#1
0
    //////////////////
    // Widget management
    //////////////////
    public void UpdateWidgets()
    {
        if (currentPage == null)
        {
            return;
        }

        mouseOver.Clear();

        // Update widget lists
        widgets = GetCurrentWidgets();

        for (int i = 0; i < widgets.Length; i++)
        {
            OGWidget w = widgets[i];

            if (w == null || !w.isDrawn || w.isDisabled)
            {
                continue;
            }

            // Check mouse
            if (w.CheckMouseOver())
            {
                w.OnMouseOver();
                mouseOver.Add(w);
            }

            // Check scroll offset
            if (!w.clipTo)
            {
                w.scrollOffset.x = 0;
                w.scrollOffset.y = 0;
            }

            w.root             = this;
            w.gameObject.layer = this.gameObject.layer;
            w.UpdateWidget();
            w.Recalculate();

            // Cleanup from previous OpenGUI versions
            if (w.hidden)
            {
                DestroyImmediate(w.gameObject);
            }
        }

        // Is mouse over anything?
        isMouseOver = mouseOver.Count > 0;
    }
示例#2
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();
            }
        }
    }