public override void OnInspectorGUI() { SwarmController controller = (SwarmController)target; serializedObject.Update(); //EditorGUILayout.PropertyField(inputList); foldoutActions = EditorGUILayout.Foldout(foldoutActions, "Controller Actions", true); if (foldoutActions) { EditorGUILayout.BeginVertical("HelpBox"); List <string> inputsToRemove = new List <string>(); string[] axes = ReadAxes(); string[] usedAxes = controller.Inputs; string[] unusedAxes = axes.Where(s => !usedAxes.Contains(s)).ToArray(); for (int i = 0; i < actionRegisterSerialized.arraySize; i++) { string input = usedAxes[i]; SwarmController.ControllerAction actions = (SwarmController.ControllerAction)controller.GetActionsFromInput(input); EditorGUILayout.BeginVertical("GroupBox"); int inputIdx = Array.IndexOf(axes, input); if (inputIdx == -1) { inputIdx = 0; } int newInputIdx = EditorGUILayout.Popup(inputIdx, axes); if (newInputIdx != inputIdx) { if (usedAxes.Contains(axes[newInputIdx])) { EditorUtility.DisplayDialog("Axes already added", "The axes " + axes[newInputIdx] + " already has an entry in the controller.", "OK"); } else { controller.ChangeInputAxis(input, axes[newInputIdx]); } } EditorGUILayout.BeginHorizontal(); var propEnumerator = actionRegisterSerialized.GetArrayElementAtIndex(i).GetEnumerator(); EditorGUI.indentLevel++; while (propEnumerator.MoveNext()) { var current = propEnumerator.Current as SerializedProperty; if (current.name == "actions") { EditorGUILayout.PropertyField(current); break; } } EditorGUI.indentLevel--; //if (newAction != action) { //controller.RegisterActionToInput(newAction, input); //} if (GUILayout.Button("x", GUILayout.ExpandWidth(false))) { controller.RemoveInputAxis(input); } EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); } bool disabled = unusedAxes.Length == 0; EditorGUI.BeginDisabledGroup(disabled); addNewInputIdx = EditorGUILayout.Popup(disabled ? -1 : addNewInputIdx, unusedAxes); if (GUILayout.Button("Add new action")) { controller.AddInputAxis(unusedAxes[addNewInputIdx]); } EditorGUI.EndDisabledGroup(); EditorGUILayout.EndVertical(); } serializedObject.ApplyModifiedProperties(); }