예제 #1
0
        private static Vector2 BeginScrollView_ImplLayout(Vector2 scrollPosition, bool alwaysShowHorizontal, bool alwaysShowVertical,
                                                          GUIStyle horizontalScrollbar, GUIStyle verticalScrollbar, GUIStyle background, params GUILayoutOption[] options)
        {
            var guiscrollGroup = GUILayoutUtility.BeginLayoutGroup(background, null, Il2CppType.Of <GUIScrollGroup>())
                                 .TryCast <GUIScrollGroup>();

            EventType type = Event.current.type;

            if (type == EventType.Layout)
            {
                guiscrollGroup.resetCoords              = true;
                guiscrollGroup.isVertical               = true;
                guiscrollGroup.stretchWidth             = 1;
                guiscrollGroup.stretchHeight            = 1;
                guiscrollGroup.verticalScrollbar        = verticalScrollbar;
                guiscrollGroup.horizontalScrollbar      = horizontalScrollbar;
                guiscrollGroup.needsVerticalScrollbar   = alwaysShowVertical;
                guiscrollGroup.needsHorizontalScrollbar = alwaysShowHorizontal;
                guiscrollGroup.ApplyOptions(options);
            }

            return(BeginScrollView_Impl(guiscrollGroup.rect,
                                        scrollPosition,
                                        new Rect(0f, 0f, guiscrollGroup.clientWidth, guiscrollGroup.clientHeight),
                                        alwaysShowHorizontal,
                                        alwaysShowVertical,
                                        horizontalScrollbar,
                                        verticalScrollbar,
                                        background
                                        ));
        }
예제 #2
0
        // Begin an automatically laid out scrollview.
        public static Vector2 BeginScrollView(Vector2 scrollPosition, bool alwaysShowHorizontal, bool alwaysShowVertical, GUIStyle horizontalScrollbar, GUIStyle verticalScrollbar, GUIStyle background, params GUILayoutOption[] options)
        {
            GUIUtility.CheckOnGUI();

            GUIScrollGroup g = (GUIScrollGroup)GUILayoutUtility.BeginLayoutGroup(background, null, typeof(GUIScrollGroup));

            switch (Event.current.type)
            {
            case EventType.Layout:
                g.resetCoords              = true;
                g.isVertical               = true;
                g.stretchWidth             = 1;
                g.stretchHeight            = 1;
                g.verticalScrollbar        = verticalScrollbar;
                g.horizontalScrollbar      = horizontalScrollbar;
                g.needsVerticalScrollbar   = alwaysShowVertical;
                g.needsHorizontalScrollbar = alwaysShowHorizontal;
                g.ApplyOptions(options);
                break;

            default:
                break;
            }
            return(GUI.BeginScrollView(g.rect, scrollPosition, new Rect(0, 0, g.clientWidth, g.clientHeight), alwaysShowHorizontal, alwaysShowVertical, horizontalScrollbar, verticalScrollbar, background));
        }
예제 #3
0
        public Rect BeginHorizontal(int id, params GUILayoutOption[] options)
        {
            SlideGroupInternal internal2 = (SlideGroupInternal)GUILayoutUtility.BeginLayoutGroup(GUIStyle.none, options, typeof(SlideGroupInternal));

            internal2.SetID(this, id);
            internal2.isVertical = false;
            return(internal2.m_FinalRect);
        }
예제 #4
0
        // Begin a vertical control group.
        public static void BeginVertical(GUIContent content, GUIStyle style, params GUILayoutOption[] options)
        {
            GUILayoutGroup g = GUILayoutUtility.BeginLayoutGroup(style, options, typeof(GUILayoutGroup));

            g.isVertical = true;
            if (style != GUIStyle.none || content != GUIContent.none)
            {
                GUI.Box(g.rect, content, style);
            }
        }
예제 #5
0
        public static void BeginLayoutDirection(bool vertical, GUIContent content, GUIStyle style, GUILayoutOption[] options)
        {
            var g = GUILayoutUtility.BeginLayoutGroup(style, options, Il2CppType.Of <GUILayoutGroup>());

            g.isVertical = vertical;
            if (style != GUIStyle.none || content != GUIContent.none)
            {
                GUI.Box(g.rect, content, style);
            }
        }
예제 #6
0
        private static void BeginLayoutedListview(ListViewState state, GUIStyle style, params GUILayoutOption[] options)
        {
            GUILayoutedListViewGroup group = (GUILayoutedListViewGroup)GUILayoutUtility.BeginLayoutGroup(style, null, typeof(GUILayoutedListViewGroup));

            group.state          = state;
            state.ilvState.group = group;
            GUIUtility.GetControlID(layoutedListViewHash, FocusType.Native);
            if (Event.current.type == EventType.Layout)
            {
                group.resetCoords = false;
                group.isVertical  = true;
                group.ApplyOptions(options);
            }
        }
예제 #7
0
        internal static void DrawRoundedBoxAroundLODDFoldout(int lodGroupIndex, int activeLOD)
        {
            Texture borderTexture = lodGroupIndex == activeLOD ? GUIStyles.m_BlueBorderTextureSelected.image : GUIStyles.m_BlueBorderTextureNormal.image;

            GUILayoutGroup g = GUILayoutUtility.BeginLayoutGroup(EditorStyles.helpBox, null, typeof(GUILayoutGroup));

            g.isVertical = true;

            GUIUtility.CheckOnGUI();
            if (Event.current.type == EventType.Repaint)
            {
                GUI.DrawTexture(g.rect, borderTexture, ScaleMode.StretchToFill, true, 1, Color.white, Vector4.one * 1, Vector4.one * 3, true);
            }
        }
        private static void BeginLayoutedListview(ListViewState state, GUIStyle style, params GUILayoutOption[] options)
        {
            GUILayoutedListViewGroup g = (GUILayoutedListViewGroup)GUILayoutUtility.BeginLayoutGroup(style, null, typeof(GUILayoutedListViewGroup));

            g.state = state;
            state.ilvState.group = g;

            GUIUtility.GetControlID(layoutedListViewHash, FocusType.Passive);

            switch (Event.current.type)
            {
            case EventType.Layout:
            {
                g.resetCoords = false;
                g.isVertical  = true;
                g.ApplyOptions(options);
                break;
            }
            }
        }
예제 #9
0
        public static Vector2 BeginScrollView(Vector2 scrollPosition, bool alwaysShowHorizontal, bool alwaysShowVertical, GUIStyle horizontalScrollbar, GUIStyle verticalScrollbar, GUIStyle background, params GUILayoutOption[] options)
        {
            GUIUtility.CheckOnGUI();
            GUIScrollGroup gUIScrollGroup = (GUIScrollGroup)GUILayoutUtility.BeginLayoutGroup(background, null, typeof(GUIScrollGroup));
            EventType      type           = Event.current.type;

            if (type == EventType.Layout)
            {
                gUIScrollGroup.resetCoords              = true;
                gUIScrollGroup.isVertical               = true;
                gUIScrollGroup.stretchWidth             = 1;
                gUIScrollGroup.stretchHeight            = 1;
                gUIScrollGroup.verticalScrollbar        = verticalScrollbar;
                gUIScrollGroup.horizontalScrollbar      = horizontalScrollbar;
                gUIScrollGroup.needsVerticalScrollbar   = alwaysShowVertical;
                gUIScrollGroup.needsHorizontalScrollbar = alwaysShowHorizontal;
                gUIScrollGroup.ApplyOptions(options);
            }
            return(GUI.BeginScrollView(gUIScrollGroup.rect, scrollPosition, new Rect(0f, 0f, gUIScrollGroup.clientWidth, gUIScrollGroup.clientHeight), alwaysShowHorizontal, alwaysShowVertical, horizontalScrollbar, verticalScrollbar, background));
        }
예제 #10
0
        public static void BeginSplit(SplitterState state, GUIStyle style, bool vertical, params GUILayoutOption[] options)
        {
            float pos;
            var   g = (GUISplitterGroup)GUILayoutUtility.BeginLayoutGroup(style, null, typeof(GUISplitterGroup));

            state.ID = GUIUtility.GetControlID(splitterHash, FocusType.Passive);

            switch (Event.current.GetTypeForControl(state.ID))
            {
            case EventType.Layout:
            {
                g.state       = state;
                g.resetCoords = false;
                g.isVertical  = vertical;
                g.ApplyOptions(options);
                break;
            }

            case EventType.MouseDown:
            {
                if ((Event.current.button == 0) && (Event.current.clickCount == 1))
                {
                    float cursor = GUIUtility.RoundToPixelGrid(g.isVertical ? g.rect.y : g.rect.x);
                    pos = GUIUtility.RoundToPixelGrid(g.isVertical ? Event.current.mousePosition.y : Event.current.mousePosition.x);

                    for (int i = 0; i < state.relativeSizes.Length - 1; i++)
                    {
                        Rect splitterRect = g.isVertical ?
                                            new Rect(state.xOffset + g.rect.x, cursor + state.realSizes[i] - state.splitSize / 2, g.rect.width, state.splitSize) :
                                            new Rect(state.xOffset + cursor + state.realSizes[i] - state.splitSize / 2, g.rect.y, state.splitSize, g.rect.height);

                        if (GUIUtility.HitTest(splitterRect, Event.current))
                        {
                            state.splitterInitialOffset = pos;
                            state.currentActiveSplitter = i;
                            GUIUtility.hotControl       = state.ID;
                            Event.current.Use();
                            break;
                        }

                        cursor = GUIUtility.RoundToPixelGrid(cursor + state.realSizes[i]);
                    }
                }
                break;
            }

            case EventType.MouseDrag:
            {
                if ((GUIUtility.hotControl == state.ID) && (state.currentActiveSplitter >= 0))
                {
                    pos = g.isVertical ? Event.current.mousePosition.y : Event.current.mousePosition.x;
                    GUIUtility.RoundToPixelGrid(pos);
                    float diff = pos - state.splitterInitialOffset;

                    if (diff != 0)
                    {
                        state.splitterInitialOffset = pos;
                        state.DoSplitter(state.currentActiveSplitter, state.currentActiveSplitter + 1, diff);
                    }

                    Event.current.Use();
                }
                break;
            }

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

            case EventType.Repaint:
            {
                float cursor = GUIUtility.RoundToPixelGrid(g.isVertical ? g.rect.y : g.rect.x);

                for (var i = 0; i < state.relativeSizes.Length - 1; i++)
                {
                    var splitterRect = g.isVertical ?
                                       new Rect(state.xOffset + g.rect.x, cursor + state.realSizes[i] - state.splitSize / 2, g.rect.width, state.splitSize) :
                                       new Rect(state.xOffset + cursor + state.realSizes[i] - state.splitSize / 2, g.rect.y, state.splitSize, g.rect.height);

                    EditorGUIUtility.AddCursorRect(splitterRect, g.isVertical ? MouseCursor.ResizeVertical : MouseCursor.SplitResizeLeftRight, state.ID);

                    cursor += state.realSizes[i];
                }
            }

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

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

            case EventType.Layout:
                gUISplitterGroup.state       = state;
                gUISplitterGroup.resetCoords = false;
                gUISplitterGroup.isVertical  = vertical;
                gUISplitterGroup.ApplyOptions(options);
                break;
            }
        }
예제 #12
0
        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.Native);
            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;
            }
        }
예제 #13
0
        public static void BeginSplit(SplitterState state, GUIStyle style, bool vertical, params GUILayoutOption[] options)
        {
            SplitterGUILayout.GUISplitterGroup guiSplitterGroup = (SplitterGUILayout.GUISplitterGroup)GUILayoutUtility.BeginLayoutGroup(style, (GUILayoutOption[])null, typeof(SplitterGUILayout.GUISplitterGroup));
            state.ID = GUIUtility.GetControlID(SplitterGUILayout.splitterHash, FocusType.Native);
            switch (Event.current.GetTypeForControl(state.ID))
            {
            case EventType.MouseDown:
                if (Event.current.button != 0 || Event.current.clickCount != 1)
                {
                    break;
                }
                int num1 = !guiSplitterGroup.isVertical ? (int)guiSplitterGroup.rect.x : (int)guiSplitterGroup.rect.y;
                int num2 = !guiSplitterGroup.isVertical ? (int)Event.current.mousePosition.x : (int)Event.current.mousePosition.y;
                for (int index = 0; index < state.relativeSizes.Length - 1; ++index)
                {
                    if ((!guiSplitterGroup.isVertical ? new Rect(state.xOffset + (float)num1 + (float)state.realSizes[index] - (float)(state.splitSize / 2), guiSplitterGroup.rect.y, (float)state.splitSize, guiSplitterGroup.rect.height) : new Rect(state.xOffset + guiSplitterGroup.rect.x, (float)(num1 + state.realSizes[index] - state.splitSize / 2), guiSplitterGroup.rect.width, (float)state.splitSize)).Contains(Event.current.mousePosition))
                    {
                        state.splitterInitialOffset = num2;
                        state.currentActiveSplitter = index;
                        GUIUtility.hotControl       = state.ID;
                        Event.current.Use();
                        break;
                    }
                    num1 += state.realSizes[index];
                }
                break;

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

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

            case EventType.Repaint:
                int num4 = !guiSplitterGroup.isVertical ? (int)guiSplitterGroup.rect.x : (int)guiSplitterGroup.rect.y;
                for (int index = 0; index < state.relativeSizes.Length - 1; ++index)
                {
                    EditorGUIUtility.AddCursorRect(!guiSplitterGroup.isVertical ? new Rect(state.xOffset + (float)num4 + (float)state.realSizes[index] - (float)(state.splitSize / 2), guiSplitterGroup.rect.y, (float)state.splitSize, guiSplitterGroup.rect.height) : new Rect(state.xOffset + guiSplitterGroup.rect.x, (float)(num4 + state.realSizes[index] - state.splitSize / 2), guiSplitterGroup.rect.width, (float)state.splitSize), !guiSplitterGroup.isVertical ? MouseCursor.SplitResizeLeftRight : MouseCursor.ResizeVertical, state.ID);
                    num4 += state.realSizes[index];
                }
                break;

            case EventType.Layout:
                guiSplitterGroup.state       = state;
                guiSplitterGroup.resetCoords = false;
                guiSplitterGroup.isVertical  = vertical;
                guiSplitterGroup.ApplyOptions(options);
                break;
            }
        }