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(); }
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(); }
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; }