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 void DrawGui(SerializedObject serializedObject, UnityEngine.Object target)
        {
            TBetter obj      = target as TBetter;
            var     listProp = serializedObject.FindProperty("betterTransitions");

            // Transitions
            EditorGuiUtils.DrawTransitions("Better Transitions", obj.BetterTransitions, listProp,
                                           ref count, Transitions.SelectionStateNames);
        }
 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);
 }
Example #4
0
        public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();

            BetterToggle tgl = target as BetterToggle;

            helper.DrawGui(serializedObject, tgl);

            // Toggle Transitions
            var tgProp = serializedObject.FindProperty("betterToggleTransitions");

            EditorGuiUtils.DrawTransitions("Better Toggle Transitions (On / Off)", tgl.BetterToggleTransitions, tgProp,
                                           ref toggleTransCount, Transitions.OnOffStateNames);

            serializedObject.ApplyModifiedProperties();
        }
Example #5
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();
        }