UnityEditor.SplitterGUILayout.BeginSplit C# (CSharp) Method

BeginSplit() public static method

public static BeginSplit ( SplitterState state, GUIStyle style, bool vertical ) : void
state SplitterState
style UnityEngine.GUIStyle
vertical bool
return void
        public static void BeginSplit(SplitterState state, GUIStyle style, bool vertical, params GUILayoutOption[] options)
        {
            int num;
            GUISplitterGroup group = (GUISplitterGroup) GUILayoutUtility.BeginLayoutGroup(style, null, typeof(GUISplitterGroup));
            state.ID = GUIUtility.GetControlID(splitterHash, FocusType.Passive);
            switch (Event.current.GetTypeForControl(state.ID))
            {
                case EventType.MouseDown:
                    if ((Event.current.button == 0) && (Event.current.clickCount == 1))
                    {
                        int num2 = !group.isVertical ? ((int) group.rect.x) : ((int) group.rect.y);
                        num = !group.isVertical ? ((int) Event.current.mousePosition.x) : ((int) Event.current.mousePosition.y);
                        for (int i = 0; i < (state.relativeSizes.Length - 1); i++)
                        {
                            Rect rect = !group.isVertical ? new Rect(((state.xOffset + num2) + state.realSizes[i]) - (state.splitSize / 2), group.rect.y, (float) state.splitSize, group.rect.height) : new Rect(state.xOffset + group.rect.x, (float) ((num2 + state.realSizes[i]) - (state.splitSize / 2)), group.rect.width, (float) state.splitSize);
                            if (rect.Contains(Event.current.mousePosition))
                            {
                                state.splitterInitialOffset = num;
                                state.currentActiveSplitter = i;
                                GUIUtility.hotControl = state.ID;
                                Event.current.Use();
                                break;
                            }
                            num2 += state.realSizes[i];
                        }
                    }
                    break;

                case EventType.MouseUp:
                    if (GUIUtility.hotControl == state.ID)
                    {
                        GUIUtility.hotControl = 0;
                        state.currentActiveSplitter = -1;
                        state.RealToRelativeSizes();
                        Event.current.Use();
                    }
                    break;

                case EventType.MouseDrag:
                    if ((GUIUtility.hotControl == state.ID) && (state.currentActiveSplitter >= 0))
                    {
                        num = !group.isVertical ? ((int) Event.current.mousePosition.x) : ((int) Event.current.mousePosition.y);
                        int diff = num - state.splitterInitialOffset;
                        if (diff != 0)
                        {
                            state.splitterInitialOffset = num;
                            state.DoSplitter(state.currentActiveSplitter, state.currentActiveSplitter + 1, diff);
                        }
                        Event.current.Use();
                    }
                    break;

                case EventType.Repaint:
                {
                    int num5 = !group.isVertical ? ((int) group.rect.x) : ((int) group.rect.y);
                    for (int j = 0; j < (state.relativeSizes.Length - 1); j++)
                    {
                        Rect position = !group.isVertical ? new Rect(((state.xOffset + num5) + state.realSizes[j]) - (state.splitSize / 2), group.rect.y, (float) state.splitSize, group.rect.height) : new Rect(state.xOffset + group.rect.x, (float) ((num5 + state.realSizes[j]) - (state.splitSize / 2)), group.rect.width, (float) state.splitSize);
                        EditorGUIUtility.AddCursorRect(position, !group.isVertical ? MouseCursor.SplitResizeLeftRight : MouseCursor.ResizeVertical, state.ID);
                        num5 += state.realSizes[j];
                    }
                    break;
                }
                case EventType.Layout:
                    group.state = state;
                    group.resetCoords = false;
                    group.isVertical = vertical;
                    group.ApplyOptions(options);
                    break;
            }
        }

Usage Example

 public static void BeginVerticalSplit(SplitterState state, GUIStyle style, params GUILayoutOption[] options)
 {
     SplitterGUILayout.BeginSplit(state, style, true, options);
 }
All Usage Examples Of UnityEditor.SplitterGUILayout::BeginSplit