public static void Draw(SerializedProperty list, OnAddAt onAddAtCallback, OnRemoveAt onRemoveAtCallback)
    {
        if (!list.isArray)
        {
            return;
        }

        EditorGUILayout.PropertyField(list);
        EditorGUI.indentLevel += 1;

        if (list.isExpanded)
        {
            EditorGUILayout.PropertyField(list.FindPropertyRelative("Array.size"));

            EditorGUILayout.BeginHorizontal();
            GUILayout.Space(16);

            if (GUILayout.Button(new GUIContent("+")))
            {
                if (onAddAtCallback != null)
                {
                    onAddAtCallback(-1);
                }
            }

            EditorGUILayout.EndHorizontal();

            for (int i = 0; i < list.arraySize; i++)
            {
                EditorGUILayout.BeginHorizontal();
                GUILayout.Space(16);
                GUILayout.Label(string.Format("Vertex {0}", i));

                EditorGUILayout.PropertyField(list.GetArrayElementAtIndex(i), GUIContent.none);

                if (GUILayout.Button(new GUIContent("+"), miniButtonWidth, miniButtonHeight))
                {
                    if (onAddAtCallback != null)
                    {
                        onAddAtCallback(i);
                    }
                }

                if (GUILayout.Button(new GUIContent("-"), miniButtonWidth, miniButtonHeight))
                {
                    if (onRemoveAtCallback != null)
                    {
                        onRemoveAtCallback(i);
                    }
                }

                EditorGUILayout.EndHorizontal();
            }
        }

        EditorGUI.indentLevel -= 1;
    }
Example #2
0
        /// <summary>
        /// Removes a string from the string table.
        /// </summary>
        public static bool RemoveAt(int index)
        {
            SampleCsStringTable string_table = SampleCsStringTable.Instance;
            bool rc = string_table.RemoveAt(index);

            if (rc)
            {
                // Invoke event
                if (null != OnRemoveAt)
                {
                    OnRemoveAt.Invoke(index);
                }
            }
            return(rc);
        }