public override void DrawGUI(Rect rect) { float width = Mathf.Min(200, rect.width); if (!_expanded) { //calculate rect rect = VxlGUI.GetAboveElement(rect, 0, VxlGUI.MED_BAR); //draw background VxlGUI.DrawRect(rect, "DarkTransparentGrey"); //draw foldout toggle label EditorGUI.BeginChangeCheck(); _expanded = EditorGUI.Foldout(rect, _expanded, "Mesh", true, GUI.skin.GetStyle("LightBoldFoldout")); if (EditorGUI.EndChangeCheck()) { _repaint_menu = true; } } else { float content_height = (2 * VxlGUI.MED_BAR) + VxlGUI.SM_SPACE; float panel_height = Mathf.Min(rect.height, VxlGUI.SM_SPACE + VxlGUI.MED_BAR + content_height); float scroll_height = Mathf.Max(0, panel_height - VxlGUI.SM_SPACE - VxlGUI.MED_BAR); Rect panel_rect = VxlGUI.GetAboveElement(rect, 0, panel_height); Rect rect_scroll = VxlGUI.GetSandwichedRectY(panel_rect, VxlGUI.MED_BAR + VxlGUI.SM_SPACE, 0); Rect content_rect = VxlGUI.GetVerticalScrollViewRect(rect_scroll.width, rect_scroll.height, content_height); VxlGUI.DrawRect(panel_rect, "DarkTransparentGrey"); EditorGUI.BeginChangeCheck(); Rect row_rect = VxlGUI.GetAboveElement(panel_rect, 0, VxlGUI.MED_BAR, VxlGUI.SM_SPACE, 0); _expanded = EditorGUI.Foldout(row_rect, _expanded, "Mesh", true, GUI.skin.GetStyle("LightBoldFoldout")); Rect rect_content = VxlGUI.GetBelowRightElement(content_rect, 0, content_rect.width - VxlGUI.MED_BAR, 0, content_rect.height); if (EditorGUI.EndChangeCheck()) { _repaint_menu = true; } EditorGUI.BeginChangeCheck(); _scroll = GUI.BeginScrollView(rect_scroll, _scroll, content_rect); //invert x int level = 0; row_rect = VxlGUI.GetAboveElement(rect_content, level, VxlGUI.MED_BAR, VxlGUI.SM_SPACE, 0); invertx = EditorGUI.Foldout(row_rect, invertx, "Invert X", true, GUI.skin.GetStyle("LightFoldout")); level += 1; //invert y row_rect = VxlGUI.GetAboveElement(rect_content, level, VxlGUI.MED_BAR, VxlGUI.SM_SPACE, 0); inverty = EditorGUI.Foldout(row_rect, inverty, "Invert Y", true, GUI.skin.GetStyle("LightFoldout")); level += 1; GUI.EndScrollView(); if (EditorGUI.EndChangeCheck()) { _repaint_menu = true; _render_mesh = true; _update_mesh = true; } } }
private void UpdateRects(Rect rect) { Rect rect_col = VxlGUI.GetLeftColumn(rect, VxlGUI.SM_SPACE, 0.5f); //calculate axi rects _rect_axititle = VxlGUI.GetAboveElement(rect_col, 0, VxlGUI.MED_BAR); _rect_axiscroll = VxlGUI.GetSandwichedRectY(rect_col, VxlGUI.MED_BAR + VxlGUI.SM_SPACE, 0); _rect_axicontent = VxlGUI.GetScrollViewRect(_axilist, _rect_axiscroll.width, _rect_axiscroll.height); rect_col = VxlGUI.GetRightColumn(rect, VxlGUI.SM_SPACE, 0.5f); //calculate socket rects _rect_sockethead = VxlGUI.GetAboveElement(rect_col, 0, (2 * VxlGUI.MED_BAR) + VxlGUI.MED_SPACE); _rect_sockettitle = VxlGUI.GetAboveElement(_rect_sockethead, 0, VxlGUI.MED_BAR); _rect_invx = VxlGUI.GetBelowLeftElement(_rect_sockethead, 0, _rect_sockethead.width / 2f, 0, VxlGUI.MED_BAR); _rect_invy = VxlGUI.GetBelowRightElement(_rect_sockethead, 0, _rect_sockethead.width / 2f, 0, VxlGUI.MED_BAR); _rect_socketscroll = VxlGUI.GetSandwichedRectY(rect_col, _rect_sockethead.height + VxlGUI.SM_SPACE, VxlGUI.MED_BAR + VxlGUI.SM_SPACE); _rect_socketcontent = VxlGUI.GetScrollViewRect(_socketlist, _rect_socketscroll.width, _rect_socketscroll.height); _rect_socketbuttonpanel = VxlGUI.GetBelowElement(rect_col, 0, VxlGUI.MED_BAR); float button_width = Mathf.Min(60, _rect_socketbuttonpanel.width / 3f); _rect_addsocket = VxlGUI.GetRightElement(_rect_socketbuttonpanel, 0, button_width); _rect_delsocket = VxlGUI.GetLeftElement(_rect_socketbuttonpanel, 0, button_width); _rect_secondaddsocket = VxlGUI.GetRightElement(_rect_socketbuttonpanel, 1, button_width); }
public override void DrawGUI(Rect rect) { float width = Mathf.Min(200, rect.width); rect = new Rect(rect.x, rect.y, width, rect.height); if (!expanded) { //calculate rect rect = VxlGUI.GetAboveElement(rect, 0, VxlGUI.MED_BAR); //draw background VxlGUI.DrawRect(rect, "DarkTransparentGrey"); //draw foldout toggle label EditorGUI.BeginChangeCheck(); expanded = EditorGUI.Foldout(rect, expanded, "Display", true, GUI.skin.GetStyle("LightBoldFoldout")); if (EditorGUI.EndChangeCheck()) { _repaint_menu = true; } } else { float content_height = GetPanelHeight(); float panel_height = Mathf.Min(rect.height, VxlGUI.SM_SPACE + VxlGUI.MED_BAR + content_height); float scroll_height = Mathf.Max(0, panel_height - VxlGUI.SM_SPACE - VxlGUI.MED_BAR); Rect panel_rect = VxlGUI.GetAboveElement(rect, 0, panel_height); Rect rect_scroll = VxlGUI.GetSandwichedRectY(panel_rect, VxlGUI.MED_BAR + VxlGUI.SM_SPACE, 0); Rect content_rect = VxlGUI.GetVerticalScrollViewRect(rect_scroll.width, rect_scroll.height, content_height); VxlGUI.DrawRect(panel_rect, "DarkTransparentGrey"); EditorGUI.BeginChangeCheck(); Rect row_rect = VxlGUI.GetAboveElement(panel_rect, 0, VxlGUI.MED_BAR, VxlGUI.SM_SPACE, 0); expanded = EditorGUI.Foldout(row_rect, expanded, "Display", true, GUI.skin.GetStyle("LightBoldFoldout")); Rect rect_content = VxlGUI.GetBelowRightElement(content_rect, 0, content_rect.width - VxlGUI.MED_BAR, 0, content_rect.height); if (EditorGUI.EndChangeCheck()) { _repaint_menu = true; } EditorGUI.BeginChangeCheck(); _scroll = GUI.BeginScrollView(rect_scroll, _scroll, content_rect); //origin int level = 0; row_rect = VxlGUI.GetAboveElement(rect_content, level, VxlGUI.MED_BAR, VxlGUI.SM_SPACE, 0); origin_enabled = EditorGUI.Foldout(row_rect, origin_enabled, "Origin", true, GUI.skin.GetStyle("LightFoldout")); level += 1; //global axis row_rect = VxlGUI.GetAboveElement(rect_content, level, VxlGUI.MED_BAR, VxlGUI.SM_SPACE, 0); global_enabled = EditorGUI.Foldout(row_rect, global_enabled, "Global Axis", true, GUI.skin.GetStyle("LightFoldout")); level += 1; //axi row_rect = VxlGUI.GetAboveElement(rect_content, level, VxlGUI.MED_BAR, VxlGUI.SM_SPACE, 0); voxelaxi_enabled = EditorGUI.Foldout(row_rect, voxelaxi_enabled, "Voxel Axi", true, GUI.skin.GetStyle("LightFoldout")); level += 1; //frame if (enable_voxelframe) { row_rect = VxlGUI.GetAboveElement(rect_content, level, VxlGUI.MED_BAR, VxlGUI.SM_SPACE, 0); voxelframe_enabled = EditorGUI.Foldout(row_rect, voxelframe_enabled, "Voxel Frame", true, GUI.skin.GetStyle("LightFoldout")); level += 1; if (enable_voxelflip && voxelframe_enabled) { float y = (level * VxlGUI.MED_BAR) + ((Mathf.Max(0, level - 1) * VxlGUI.SM_SPACE)); Rect frame_rect = VxlGUI.GetSandwichedRectX(VxlGUI.GetSandwichedRectY(rect_content, y, 0), VxlGUI.MED_BAR, 0); row_rect = VxlGUI.GetAboveElement(frame_rect, 0, VxlGUI.MED_BAR, VxlGUI.SM_SPACE, 0); voxelframe_flip = EditorGUI.Foldout(row_rect, voxelframe_flip, "Flip Voxel", true, GUI.skin.GetStyle("LightFoldout")); level += 1; } } GUI.EndScrollView(); if (EditorGUI.EndChangeCheck()) { _repaint_menu = true; _render_mesh = true; } } }