public void OnGUI() { _scroll = BeginScrollView(_scroll); switch (_inspectionObject) { case InputGroup group: group.groupName = NameField(group.groupName); if (DeleteButton()) { OnDeleteGroup.Invoke(group); } break; case InspectorInputAction action: action.action.actionName = NameField(action.action.actionName); DisplayKeys(action.action); Space(); if (DeleteButton()) { OnDeleteAction.Invoke(action); } break; case InspectorInputAxis axis: axis.axis.axisName = NameField(axis.axis.axisName); EditorChangeChecker.BeginChangeCheck(InputMapWindow.SetMapDirty); axis.axis.positiveAction = TextField("Positive", axis.axis.positiveAction); axis.axis.negativeAction = TextField("Negative", axis.axis.negativeAction); EditorChangeChecker.EndChangeCheckAndCleanup(); if (DeleteButton()) { OnDeleteAxis.Invoke(axis); } break; case InputAction _: HelpBox(new GUIContent($"Use '{nameof(InspectorInputAction)}' instead of '{nameof(InputAction)}'!")); break; case InputAxis _: HelpBox(new GUIContent($"Use '{nameof(InspectorInputAxis)}' instead of '{nameof(InputAxis)}'!")); break; } EndScrollView(); if (OnNextRepaint != null && Event.current.type == EventType.Repaint) { OnNextRepaint?.Invoke(); OnNextRepaint = null; InputMapWindow.GetEditorWindow().Repaint(); } }
void DisplayKeys(InputAction action) { actionKeyFoldout = Foldout(actionKeyFoldout, "Keys", true, EditorStyles.foldoutHeader); if (!actionKeyFoldout) { return; } BeginVertical(new GUIStyle() { margin = new RectOffset((int)EditorGUIUtility.singleLineHeight, 0, 0, 0) }); //Checking for changes EditorChangeChecker.BeginChangeCheck(InputMapWindow.SetMapDirty); for (int i = 0; i < action.keys.Count; i++) { //Listening for key if (_currentListeningKeyCode == i) { if (Event.current.isKey) { action.keys[i] = Event.current.keyCode; _currentListeningKeyCode = -1; InputMapWindow.GetEditorWindow().Repaint(); } if (EditorChangeChecker.IgnorableButton("Cancel") || Event.current.isMouse) { _currentListeningKeyCode = -1; InputMapWindow.GetEditorWindow().Repaint(); } continue; } //Drawing normal line BeginHorizontal(); action.keys[i] = KeyCodePopup(action.keys[i]); if (EditorChangeChecker.IgnorableButton("Change", GUILayout.Width(60f))) { _currentListeningKeyCode = i; GUI.FocusControl(null); } if (GUILayout.Button("-", GUILayout.Width(EditorGUIUtility.singleLineHeight))) { action.keys.RemoveAt(i); } EndHorizontal(); } if (GUILayout.Button("+")) { action.keys.Add(default);