Example #1
0
        /// <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();
        }