public static void DrawTransitions(string title,
                                           List <Transitions> transitions, SerializedProperty transitionsProp, ref int count,
                                           params string[] stateNames)
        {
            EditorGuiUtils.DrawLayoutList(title,
                                          transitions, transitionsProp, ref count,
                                          createCallback: (p) =>
            {
                var namesProp = p.FindPropertyRelative("stateNames");

                // unity copies the previous content.
                // so we need to fill the array only the first time.
                if (namesProp.arraySize >= stateNames.Length)
                {
                    return;
                }

                for (int i = 0; i < stateNames.Length; i++)
                {
                    namesProp.InsertArrayElementAtIndex(i);
                    namesProp.serializedObject.ApplyModifiedPropertiesWithoutUndo();
                    string name      = stateNames[i];
                    var elem         = namesProp.GetArrayElementAtIndex(i);
                    elem.stringValue = name;
                }
                namesProp.serializedObject.ApplyModifiedPropertiesWithoutUndo();
            },
                                          drawItemCallback: (item, p) =>
            {
                TransitionsDrawer.DrawGui(item, p);

                EditorGUILayout.Separator();
            });
        }
 public static void DrawLayoutList <T>(string listTitle,
                                       List <T> list, SerializedProperty listProp, ref int count, ref bool foldout,
                                       Action <SerializedProperty> createCallback, Action <T, SerializedProperty> drawItemCallback)
 {
     EditorGuiUtils.DrawLayoutList(
         listTitle, true,
         list, listProp,
         ref count, ref foldout,
         createCallback, drawItemCallback);
 }
Exemple #3
0
        public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();

            BetterInputField obj = target as BetterInputField;

            helper.DrawGui(serializedObject, obj);

            var prop = serializedObject.FindProperty("additionalPlaceholders");

            EditorGuiUtils.DrawLayoutList("Additional Placeholders",
                                          obj.AdditionalPlaceholders, prop, ref phCount,
                                          createCallback: null,
                                          drawItemCallback: (item, p) =>
            {
                EditorGUILayout.PropertyField(p);
                serializedObject.ApplyModifiedProperties();
            }
                                          );

            serializedObject.ApplyModifiedProperties();
        }