public PrettyListViewer( SerializedObject serializedObject, SerializedProperty elements, HeaderCallbackDelegate onDrawHeader, ElementCallbackDelegate onDrawElement, ElementHeightCallbackDelegate elementHeightGetter, ReorderCallbackDelegate onReorder = null, AddCallbackDelegate onAdd = null, RemoveCallbackDelegate onRemove = null ) : base(serializedObject, elements) { drawHeaderCallback = onDrawHeader; drawElementCallback = onDrawElement; elementHeightCallback = elementHeightGetter; if (onReorder != null) { draggable = true; onReorderCallback = onReorder; } else { draggable = false; } if (onAdd != null) { displayAdd = true; onAddCallback = onAdd; } else { displayAdd = false; } if (onRemove != null) { displayRemove = true; onRemoveCallback = onRemove; } else { displayRemove = false; } }
public ReorderableList CreateRecordList(SerializedObject serializedObject, string varName, string title, ReorderCallbackDelegate onreorder, SelectCallbackDelegate onselect, AddCallbackDelegate onadd, RemoveCallbackDelegate onremove) { var reordList = new ReorderableList(serializedObject, serializedObject.FindProperty(varName), true, true, true, true); reordList.displayAdd = reordList.displayRemove = true; reordList.drawHeaderCallback = (Rect rect) => { EditorGUI.LabelField(rect, title, EditorStyles.boldLabel); Texture2D btnTexture = reordList.elementHeight == 0f ? EditorGUIUtility.FindTexture("winbtn_win_max_h") : EditorGUIUtility.FindTexture("winbtn_win_min_h"); if (GUI.Button(new Rect(rect.width + 4, rect.y + 2, rect.height, rect.height), btnTexture, EditorStyles.label)) { reordList.elementHeight = reordList.elementHeight == 0f ? 21f : 0f; reordList.draggable = reordList.elementHeight > 0f; } }; reordList.onReorderCallback = onreorder; reordList.onSelectCallback = onselect; reordList.onAddCallback = onadd; reordList.onRemoveCallback = onremove; return(reordList); }