/// <summary> /// Draw the reorderablelist using the serialized object. /// </summary> private void DrawReorderable() { GUILayout.BeginVertical(); m_reorderableList.drawHeaderCallback = (Rect rect) => { EditorGUI.LabelField(rect, string.Format("-{0} Elements-", m_reorderableList.count)); }; m_reorderableList.drawElementCallback = (Rect rect, int i, bool isActive, bool isFocused) => { int spaceForIndicator = 16; Rect elementRect = rect; elementRect.width -= spaceForIndicator; m_dataStore.DrawElement(elementRect, m_elementsList.GetArrayElementAtIndex(i)); if (i / m_editorVars.ElementsPerPage == m_editorVars.CurrentPage - 1) { Rect asteriskRect = rect; asteriskRect.width = spaceForIndicator; asteriskRect.x = rect.x + rect.width - spaceForIndicator; GUI.Label(asteriskRect, "^"); } }; m_reorderableList.onAddCallback = (ReorderableList reorderableList) => { m_dataStore.AddNewElement(); DeterminePages(); }; m_reorderableList.onRemoveCallback = (ReorderableList reorderableList) => { if (EditorUtility.DisplayDialog("Warning!", "Are you sure you want to delete this element?", "Yes", "No")) { ReorderableList.defaultBehaviours.DoRemoveButton(reorderableList); DeterminePages(); } }; m_reorderableList.onSelectCallback = (ReorderableList reorderableList) => { OnElementSelect(reorderableList.index); }; m_reorderableList.DoLayoutList(); GUILayout.EndVertical(); }