using UnityEngine; using UnityEditor; namespace CarbonInput { /// /// Editor for . /// [CustomEditor(typeof(CarbonSettings))] public class CarbonSettingsEditor : Editor { /// /// Short info text for /// private static string[] BehaviourHelp = { "UseMappingOne:\nUse the same mapping PlayerIndex.One uses, but listen on any gamepad for that mapping.", "UseControllerOne:\nAlways use PlayerIndex.One whenever PlayerIndex.Any is used.", "CheckAll:\nGo over all players and use first match. Slightly slower than the other two behaviours, but it is the most accurate." }; private CarbonSettings Settings { get { return (CarbonSettings)target; } } public override void OnInspectorGUI() { GUI.changed = false; EditorGUILayout.HelpBox(BehaviourHelp[(int)Settings.Behaviour], MessageType.Info); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField(new GUIContent("Behaviour", "Defines the behaviour of PlayerIndex.Any"), GUILayout.Width(100)); EditorGUI.BeginChangeCheck(); AnyBehaviour value = (AnyBehaviour)EditorGUILayout.EnumPopup(Settings.Behaviour); if(EditorGUI.EndChangeCheck()) { Undo.RecordObject(Settings, "Changed Behaviour to " + value.ToString()); Settings.Behaviour = value; } EditorGUILayout.EndHorizontal(); EditorGUILayout.Separator(); EditorGUILayout.HelpBox( "The default behaviour of any axis is as follows:\n" + "X axis goes from -1 (left) to +1(right)\n" + "Y axis goes from -1 (up) to +1 (down)", MessageType.Info); EditorGUILayout.LabelField("Inverted Axis"); EditorGUILayout.BeginHorizontal(); AxisToggle(CAxis.LX); AxisToggle(CAxis.RX); AxisToggle(CAxis.DX); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); AxisToggle(CAxis.LY); AxisToggle(CAxis.RY); AxisToggle(CAxis.DY); EditorGUILayout.EndHorizontal(); if(GUI.changed) EditorUtility.SetDirty(target); } /// /// Helper method used to invert an axis, providing an undo action. /// /// private void AxisToggle(CAxis axis) { EditorGUI.BeginChangeCheck(); bool value = EditorGUILayout.ToggleLeft(axis.ToString(), Settings[axis], GUILayout.Width(40)); if(EditorGUI.EndChangeCheck()) { Undo.RecordObject(Settings, "Inverted Axis " + axis.ToString()); Settings[axis] = value; } } } }