public override void DrawGUI(Rect rect) { //update both visual lists UpdateFaceList(); UpdatePatternList(); //update layout rects UpdateLayoutRects(rect); //draw key selection header VxlGUI.DrawRect(_rect_selectheader, "DarkGradient"); GUI.Label(_rect_selectheader, _title, GUI.skin.GetStyle("LeftLightHeader")); //draw key selection list VxlGUI.DrawRect(_rect_selectscroll, "DarkWhite"); _selectscroll = GUI.BeginScrollView(_rect_selectscroll, _selectscroll, _rect_select_content); _facelist.DoList(_rect_select_content); GUI.EndScrollView(); //draw add pattern template DrawAddPatternPanel(); //draw pattern header VxlGUI.DrawRect(_rect_patheader, "DarkGradient"); GUI.Label(_rect_patheader, "Patterns", GUI.skin.GetStyle("LeftLightHeader")); //draw pattern list VxlGUI.DrawRect(_rect_patscroll, "DarkWhite"); _patscroll = GUI.BeginScrollView(_rect_patscroll, _patscroll, _rect_patcontent); _patternlist.DoList(_rect_patcontent); GUI.EndScrollView(); //draw pattern panel VxlGUI.DrawRect(_rect_patpanel, "DarkGradient"); float button_width = Mathf.Min(60f, _rect_patpanel.width / 2f); bool invalid_addpat = _addpat.IsEmpty() || !_addpat.IsValid(); bool invalid_faceindex = _facelist.count <= 0 || _facelist.index < 0 || _facelist.index >= _facelist.count; bool invalid_exists = target == null || target.RectPatternExists(_addpat); EditorGUI.BeginDisabledGroup(target == null || invalid_addpat || invalid_faceindex || invalid_exists); if (GUI.Button(VxlGUI.GetRightElement(_rect_patpanel, 0, button_width), "Add", GUI.skin.GetStyle("LightButton"))) { if (target != null) { Undo.RecordObject(target, "Add Rect Pattern"); target.AddRectPattern(_faces[_facelist.index], _addpat); _repaint_menu = false; //set target dirty EditorUtility.SetDirty(target); //update pattern list UpdatePatternList(); } } EditorGUI.EndDisabledGroup(); bool invalid_patindex = _patternlist.count <= 0 || _patternlist.index < 0 || _patternlist.index >= _patternlist.count; EditorGUI.BeginDisabledGroup(target == null || invalid_faceindex || invalid_patindex); if (GUI.Button(VxlGUI.GetLeftElement(_rect_patpanel, 0, button_width), "Delete", GUI.skin.GetStyle("LightButton"))) { if (target != null) { Undo.RecordObject(target, "Delete Rect Pattern"); target.DeleteRectPattern(_faces[_facelist.index], _patterns[_patternlist.index]); _repaint_menu = false; //set target dirty EditorUtility.SetDirty(target); //update pattern list UpdatePatternList(); } } EditorGUI.EndDisabledGroup(); }