Example #1
0
        public void Draw(int draw_id, Rect view)
        {
            EditorGUIUtilityExtensions.UseLabelWidth(layout_state.GetCurrentLabelWidth(), delegate() {
                attachments.Process(a => a.PreDrawInternal());
                bool did_draw = view.Overlaps(element_rect);

                if (did_draw != did_draw_last)
                {
                    GUIUtilityExtensions.Unfocus();
                }

                if (did_draw)
                {
                    DrawElementInternal(draw_id, view);
                    DrawContentsInternal(draw_id, view);

                    attachments.Process(a => a.DrawInternal(view));
                }

                did_draw_last = did_draw;
                attachments.Process(a => a.PostDrawInternal());
            });

            last_draw_id = draw_id;
        }
Example #2
0
        public void LayoutDrawUnwind(Rect rect, EditorGUILayoutState state)
        {
            if (state.ShouldUseVisibility())
            {
                if (Event.current.type == EventType.Repaint)
                {
                    Rect new_visible_rect = GUIUtilityExtensions.GetVisibleRect();

                    if (new_visible_rect.height <= Screen.height && new_visible_rect.height >= 16.0f)
                    {
                        visible_rect = new_visible_rect;
                    }
                }
            }
            else
            {
                visible_rect = rect;
            }

            if (rect.width > 16.0f)
            {
                int draw_id = next_draw_id++;

                element.Plan(rect.width, state);
                element.Layout(rect.min);

                element.Draw(draw_id, visible_rect);
                element.Unwind(draw_id);
            }
        }