public void OnGui(Rect rect, SA_InputEvent e)
        {
            GUI.BeginGroup(rect);

            Rect rc = new Rect(0.0f, 0.0f, rect.width, rect.height);

            GUI.Box(rc, m_content);
            GUI.EndGroup();
        }
        private void OnGUI()
        {
            m_rootViewRect.width  = this.position.width;
            m_rootViewRect.height = this.position.height;

            BeginWindows();

            SA_InputEvent e = new SA_InputEvent(Event.current);

            m_rootView.OnGui(m_rootViewRect, e);

            EndWindows();
        }
Ejemplo n.º 3
0
        public void OnGui(Rect rect, SA_InputEvent e)
        {
            m_size = (int)rect.width;

            if (View == null)
            {
                //Nothing to render, just return
                return;
            }

            GUI.BeginGroup(rect);
            Rect rc = new Rect(0.0f, 0.0f, rect.width, rect.height);

            View.OnGui(rc, e);
            GUI.EndGroup();
        }
Ejemplo n.º 4
0
        public void OnGui(Rect rect, SA_InputEvent e)
        {
            if (!b_isInitialized)
            {
                if (m_state.SplitterRect.Equals(new Rect()))
                {
                    if (m_orientation == Orientation.Horizontal)
                    {
                        m_splitterRenderRect.xMin = ClampHorizontalSplitter(m_panel1.StartSize, rect);
                        m_splitterRenderRect.yMin = rect.yMin;
                    }
                    else
                    {
                        m_splitterRenderRect.xMin = rect.xMin;
                        m_splitterRenderRect.yMin = ClampVerticalSplitter(m_panel1.StartSize, rect);
                    }
                }
                else
                {
                    m_splitterRenderRect = m_state.SplitterRect;
                    if (m_orientation == Orientation.Horizontal)
                    {
                        m_splitterRenderRect.xMin = ClampHorizontalSplitter(m_splitterRenderRect.xMin, rect);
                        m_splitterRenderRect.yMin = rect.yMin;
                    }
                    else
                    {
                        m_splitterRenderRect.xMin = rect.xMin;
                        m_splitterRenderRect.yMin = ClampVerticalSplitter(m_splitterRenderRect.yMin, rect);
                    }
                }

                m_oldRect       = rect;
                b_isInitialized = true;
            }

            if (m_oldRect.width != rect.width || m_oldRect.height != rect.height)
            {
                if (m_orientation == Orientation.Horizontal)
                {
                    m_splitterRenderRect.xMin = ClampHorizontalSplitter(m_splitterRenderRect.xMin, rect);
                }
                else
                {
                    m_splitterRenderRect.yMin = ClampVerticalSplitter(m_splitterRenderRect.yMin, rect);
                }

                m_oldRect = rect;
            }

            if (m_orientation == Orientation.Horizontal)
            {
                m_splitterActiveRect.xMin = m_splitterRenderRect.xMin - SPLITTER_ACTIVE_SIZE;
                m_splitterActiveRect.xMax = m_splitterRenderRect.xMax + SPLITTER_ACTIVE_SIZE;
                m_splitterActiveRect.yMin = m_splitterRenderRect.yMin;
                m_splitterActiveRect.yMax = m_splitterRenderRect.yMax;
            }
            else
            {
                m_splitterActiveRect.xMin = m_splitterRenderRect.xMin;
                m_splitterActiveRect.xMax = m_splitterRenderRect.xMax;
                m_splitterActiveRect.yMin = m_splitterRenderRect.yMin - SPLITTER_ACTIVE_SIZE;
                m_splitterActiveRect.yMax = m_splitterRenderRect.yMax + SPLITTER_ACTIVE_SIZE;
            }

            //Set mouse cursor for splitter rect according to Split View orientation
            if (!b_isFixed && m_splitterActiveRect.Contains(e.mousePosition))
            {
                EditorGUIUtility.AddCursorRect(m_splitterActiveRect,
                                               m_orientation == Orientation.Horizontal ? MouseCursor.ResizeHorizontal : MouseCursor.ResizeVertical);
            }

            if (!b_isFixed && e.type == EventType.MouseDown && e.button == 0 && m_splitterActiveRect.Contains(e.mousePosition) && EditorGUIUtility.hotControl == 0)
            {
                EditorGUIUtility.hotControl = GetHashCode();
                b_dragStarted = true;
            }

            if (!b_isFixed && e.type == EventType.MouseUp && e.button == 0 && EditorGUIUtility.hotControl == GetHashCode())
            {
                EditorGUIUtility.hotControl = 0;
                b_dragStarted = false;
            }

            if (m_orientation == Orientation.Horizontal)
            {
                if (b_dragStarted && e.type == EventType.MouseDrag && EditorGUIUtility.hotControl == GetHashCode())
                {
                    m_splitterRenderRect.xMin = ClampHorizontalSplitter(e.mousePosition.x, rect);
                }

                m_splitterRenderRect.xMax = m_splitterRenderRect.xMin + m_splitterSize;
                m_splitterRenderRect.yMax = rect.yMax;

                m_panel1Rect.xMin = (int)rect.xMin;
                m_panel1Rect.xMax = (int)m_splitterRenderRect.xMin;
                m_panel1Rect.yMin = (int)rect.yMin;
                m_panel1Rect.yMax = (int)rect.yMax;

                m_panel2Rect.xMin = (int)m_splitterRenderRect.xMax;
                m_panel2Rect.xMax = (int)rect.xMax;
                m_panel2Rect.yMin = (int)rect.yMin;
                m_panel2Rect.yMax = (int)rect.yMax;
            }
            else
            {
                if (b_dragStarted && e.type == EventType.MouseDrag && EditorGUIUtility.hotControl == GetHashCode())
                {
                    m_splitterRenderRect.yMin = ClampVerticalSplitter(e.mousePosition.y, rect);
                }

                m_splitterRenderRect.yMax = m_splitterRenderRect.yMin + m_splitterSize;
                m_splitterRenderRect.xMax = rect.xMax;

                m_panel1Rect.xMin = (int)rect.xMin;
                m_panel1Rect.xMax = (int)rect.xMax;
                m_panel1Rect.yMin = (int)rect.yMin;
                m_panel1Rect.yMax = (int)m_splitterRenderRect.yMin;

                m_panel2Rect.xMin = (int)rect.xMin;
                m_panel2Rect.xMax = (int)rect.xMax;
                m_panel2Rect.yMin = (int)m_splitterRenderRect.yMax;
                m_panel2Rect.yMax = (int)rect.yMax;
            }

            m_panel1.OnGui(m_panel1Rect, e);
            DrawSplitter(m_splitterRenderRect);
            m_panel2.OnGui(m_panel2Rect, e);

            m_state.SplitterRect = m_splitterRenderRect;
        }