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