public void AddContent(GUIDockContentBase c, GUIDockPlace place) { if (place == GUIDockPlace.center) { AddContent(c); return; } else if (place != GUIDockPlace.none) { bool p = (place == GUIDockPlace.left || place == GUIDockPlace.top); var contents = m_content; var node1 = new GUIDockNode(this, c); var node2 = new GUIDockNode(this, contents); node1.m_contentFocus = c; node2.m_contentFocus = m_contentFocus; m_nodeL = p ? node1 : node2; m_nodeR = p ? node2 : node1; SwithcMode(false); m_info.m_orient = (place == GUIDockPlace.left || place == GUIDockPlace.right) ? GUIDockOrient.Horizontal : GUIDockOrient.Vertical; Console.WriteLine(m_info.m_orient.ToString()); } }
private void SetDockPlaceImpl(GUIDockPlace place, GUIDockContentBase content, GUIDockNode src, GUIDockNode dst) { //remove src.RemoveContent(content); //append dst.AddContent(content, place); m_dockChanged = true; }
private bool CheckPlaceValid(GUIDockPlace place, GUIDockNode src) { if (this == src) { if (src.m_content.Count == 1) { return(false); } if (place == GUIDockPlace.center) { return(false); } return(true); } else if (this.m_parent == src.m_parent) { bool nodeatleft = m_parent.m_nodeL == this; bool horizontal = m_parent.m_info.m_orient == GUIDockOrient.Horizontal; if (horizontal) { if (place == GUIDockPlace.left && !nodeatleft) { return(false); } if (place == GUIDockPlace.right && nodeatleft) { return(false); } } else { if (place == GUIDockPlace.top && !nodeatleft) { return(false); } if (place == GUIDockPlace.bottom && nodeatleft) { return(false); } } } return(true); }
public void SetDockPlace(GUIDockPlace place, GUIDockContentBase content, GUIDockNode src, GUIDockNode dst) { m_slotDockPlace += () => { SetDockPlaceImpl(place, content, src, dst); }; }
private GUIDockPlace DrawOnDockContentDrag(GUIDockContentBase content, GUIDockNode src) { GUIDockPlace dockPlace = GUIDockPlace.none; GUI.BeginGroup(m_info.m_sizeab, null, true); { GUI.BeginDepthLayer(1); { float rsize = 40; var center = m_info.m_sizeab.Size() * 0.5f; var rectbasic = new Vector4(center - rsize * 0.5f * Vector2.One, rsize, rsize); bool activeChecked = false; var pointer = GUI.Event.Pointer; //center if (CheckPlaceValid(GUIDockPlace.center, src)) { if (!activeChecked && GUIUtility.RectContainsCheck(GUI.GetRectAbsolute(rectbasic), pointer)) { GUI.Rect(rectbasic, GUIStyle.Current.ColorActive); activeChecked = true; dockPlace = GUIDockPlace.center; } else { GUI.Rect(rectbasic, GUIStyle.Current.ColorActiveD); } } else { GUI.Rect(rectbasic, GUIStyle.Current.ColorDisabled); } //left var rect = rectbasic.Move(-35, 0).SetSize(30, rsize); if (CheckPlaceValid(GUIDockPlace.left, src)) { if (!activeChecked && GUIUtility.RectContainsCheck(GUI.GetRectAbsolute(rect), pointer)) { GUI.Rect(rect, GUIStyle.Current.ColorActive); activeChecked = true; dockPlace = GUIDockPlace.left; } else { GUI.Rect(rect, GUIStyle.Current.ColorActiveD); } } else { GUI.Rect(rect, GUIStyle.Current.ColorDisabled); } //right rect = rectbasic.Move(45, 0).SetSize(30, rsize); if (CheckPlaceValid(GUIDockPlace.right, src)) { if (!activeChecked && GUIUtility.RectContainsCheck(GUI.GetRectAbsolute(rect), pointer)) { GUI.Rect(rect, GUIStyle.Current.ColorActive); activeChecked = true; dockPlace = GUIDockPlace.right; } else { GUI.Rect(rect, GUIStyle.Current.ColorActiveD); } } else { GUI.Rect(rect, GUIStyle.Current.ColorDisabled); } //top rect = rectbasic.Move(0, -35).SetSize(rsize, 30); if (CheckPlaceValid(GUIDockPlace.top, src)) { if (!activeChecked && GUIUtility.RectContainsCheck(GUI.GetRectAbsolute(rect), pointer)) { GUI.Rect(rect, GUIStyle.Current.ColorActive); activeChecked = true; dockPlace = GUIDockPlace.top; } else { GUI.Rect(rect, GUIStyle.Current.ColorActiveD); } } else { GUI.Rect(rect, GUIStyle.Current.ColorDisabled); } //bottom rect = rectbasic.Move(0, 45).SetSize(rsize, 30); if (CheckPlaceValid(GUIDockPlace.bottom, src)) { if (!activeChecked && GUIUtility.RectContainsCheck(GUI.GetRectAbsolute(rect), pointer)) { GUI.Rect(rect, GUIStyle.Current.ColorActive); activeChecked = true; dockPlace = GUIDockPlace.bottom; } else { GUI.Rect(rect, GUIStyle.Current.ColorActiveD); } } else { GUI.Rect(rect, GUIStyle.Current.ColorDisabled); } } GUI.EndDepthLayer(); } GUI.EndGroup(); if (content.InternalTabBtnDragState.Stage != GUIDragStateStage.Exit) { return(GUIDockPlace.none); } return(dockPlace); }