public override void OnGUI(Rect position, SerializedProperty a_Property, GUIContent a_Label) { position.height = EditorHelp.c_LineHeight; EditorGUI.BeginProperty(position, a_Label, a_Property); SerializedProperty foldOutProperty = a_Property.FindPropertyRelative("m_IsFoldingOut"); SerializedProperty prefabProperty = a_Property.FindPropertyRelative("m_AbilityModulePrefab"); AbilityModule prefab = null; string nameString = "Ability slot empty"; if (prefabProperty.objectReferenceValue != null) { prefab = prefabProperty.objectReferenceValue as AbilityModule; nameString = prefab.GetName(); } foldOutProperty.boolValue = EditorGUI.Foldout(position, foldOutProperty.boolValue, nameString, true); Rect pos = position; if (foldOutProperty.boolValue) { EditorGUI.indentLevel++; EditorHelp.PropertyDrawerLineWithVar(a_Property, "m_AbilityModulePrefab", ref pos, "", "Prefab"); if (prefabProperty.objectReferenceValue != null) { if (EditorHelp.PropertyDrawerButton("Edit", ref pos)) { Selection.activeGameObject = prefab.gameObject; } } EditorGUI.indentLevel--; } EditorGUI.EndProperty(); }
public override void OnGUI(Rect position, SerializedProperty a_Property, GUIContent a_Label) { position.height = EditorHelp.c_LineHeight; EditorGUI.BeginProperty(position, a_Label, a_Property); SerializedProperty foldOutProperty = a_Property.FindPropertyRelative("m_IsFoldingOut"); string nameString = a_Property.FindPropertyRelative("m_Name").stringValue; if (nameString == "") { nameString = "<InputName missing>"; } foldOutProperty.boolValue = EditorGUI.Foldout(position, foldOutProperty.boolValue, nameString, true); Rect pos = position; if (foldOutProperty.boolValue) { EditorGUI.indentLevel++; EditorHelp.PropertyDrawerLineWithVar(a_Property, "m_Name", ref pos, "Name of this input, as referenced in code"); EditorHelp.PropertyDrawerLineWithVar(a_Property, "m_InputType", ref pos, "Is this input a button (or key), or directional (analogue stick, arrow keys, WASD)?"); InputElement.InputType type = (InputElement.InputType)a_Property.FindPropertyRelative("m_InputType").enumValueIndex; switch (type) { case InputElement.InputType.Button: { EditorHelp.PropertyDrawerLineWithVar(a_Property, "m_UnityInputType", ref pos, "Is this a button, or can it be triggered by an axis as well (triggers on a gamepad for example)"); if (a_Property.FindPropertyRelative("m_UnityInputType").enumValueIndex != 0) { EditorHelp.PropertyDrawerLineWithVar(a_Property, "m_UnityAxisRecognition", ref pos, "If this button can be triggered by an axis, should it trigger if the axis value is: positive only, negative only, or not zero"); } EditorHelp.PropertyDrawerLineWithVar(a_Property, "m_ButtonName", ref pos, "In Unity's input manager, what is the name of the button/axis that this input uses?"); } break; case InputElement.InputType.Direction: { EditorHelp.PropertyDrawerLineWithVar(a_Property, "m_HorizontalAxisName", ref pos, "In Unity's input manager, what is the name of the axis that this input uses for its horizontal value?"); EditorHelp.PropertyDrawerLineWithVar(a_Property, "m_VerticalAxisName", ref pos, "In Unity's input manager, what is the name of the axis that this input uses for its vertical value?"); EditorHelp.PropertyDrawerLineWithVar(a_Property, "m_DirectionThreshold", ref pos, "In the case of analogue input, how far should the input be pushed before a direction is recognized? For example: how far should an analogue stick be pulled down before it registers as a crouch command"); } break; } EditorGUI.indentLevel--; } EditorGUI.EndProperty(); }