Ejemplo n.º 1
0
    public override void OnInspectorGUI()
    {
        mapFoldout = EditorGUILayout.Foldout(mapFoldout, "Input Maps");

        if (mapFoldout)
        {
            EditorGUI.indentLevel++;

            mapCreationFoldout = EditorGUILayout.Foldout(mapCreationFoldout, "Create New Map");

            if (mapCreationFoldout)
            {
                EditorGUI.indentLevel++;

                // Axis and Button list titles
                EditorGUILayout.BeginHorizontal();
                GUIStyle style = new GUIStyle()
                {
                    alignment = TextAnchor.MiddleCenter, fontStyle = FontStyle.Bold
                };
                EditorGUILayout.LabelField("Axis Actions", style);
                EditorGUILayout.LabelField("Button Actions", style);
                EditorGUILayout.EndHorizontal();
                EditorGUILayout.Space();

                for (int i = 0; i < Mathf.Max(newMap.mapAxes.Count, newMap.mapButtons.Count); i++)
                {
                    EditorGUILayout.BeginHorizontal();

                    EditorGUIUtility.labelWidth = (EditorGUIUtility.currentViewWidth / 2) - (EditorGUI.indentLevel * 10) - (2 * miniButtonWidth) - GUI.skin.button.CalcSize(removeButton).x;
                    EditorGUILayout.PrefixLabel(i < newMap.mapAxes.Count ? newMap.mapAxes[i] : " ");
                    if (i < newMap.mapAxes.Count)
                    {
                        if (GUILayout.Button(moveUpButton, EditorStyles.miniButtonLeft, GUILayout.Width(20)))
                        {
                            newMap.MoveAxisUp(i);
                        }
                        if (GUILayout.Button(moveDownButton, EditorStyles.miniButtonMid, GUILayout.Width(20)))
                        {
                            newMap.MoveAxisDown(i);
                        }
                        if (GUILayout.Button(removeButton, EditorStyles.miniButtonRight, GUILayout.MaxWidth(GUI.skin.button.CalcSize(removeButton).x)))
                        {
                            newMap.mapAxes.RemoveAt(i);
                        }
                    }
                    else
                    {
                        GUILayout.Button("", new GUIStyle(GUI.skin.label), GUILayout.Width((2 * miniButtonWidth) + GUI.skin.button.CalcSize(removeButton).x));
                    }

                    EditorGUIUtility.labelWidth += 20;
                    EditorGUILayout.PrefixLabel(i < newMap.mapButtons.Count ? newMap.mapButtons[i] : " ");
                    if (i < newMap.mapButtons.Count)
                    {
                        if (GUILayout.Button(moveUpButton, EditorStyles.miniButtonLeft, GUILayout.Width(20)))
                        {
                            newMap.MoveButtonUp(i);
                        }
                        if (GUILayout.Button(moveDownButton, EditorStyles.miniButtonMid, GUILayout.Width(20)))
                        {
                            newMap.MoveButtonDown(i);
                        }
                        if (GUILayout.Button(removeButton, EditorStyles.miniButtonRight, GUILayout.MaxWidth(GUI.skin.button.CalcSize(removeButton).x)))
                        {
                            newMap.mapButtons.RemoveAt(i);
                        }
                    }

                    EditorGUILayout.EndHorizontal();
                }

                EditorGUILayout.Space();
                EditorGUILayout.Space();

                EditorGUILayout.BeginHorizontal();
                EditorGUIUtility.labelWidth = GUI.skin.label.CalcSize(new GUIContent("New Axis")).x + ((EditorGUI.indentLevel + 1) * 10);
                newMap.newAxis = EditorGUILayout.TextField("New Axis", newMap.newAxis);
                EditorGUIUtility.labelWidth = GUI.skin.label.CalcSize(new GUIContent("New Button")).x + ((EditorGUI.indentLevel + 1) * 10);
                newMap.newButton            = EditorGUILayout.TextField("New Button", newMap.newButton);
                EditorGUILayout.EndHorizontal();

                EditorGUILayout.BeginHorizontal();
                GUILayout.Space(EditorGUI.indentLevel * 15);
                if (GUILayout.Button("Add New Axis"))
                {
                    newMap.AddNewAxis();
                    Repaint();
                }

                GUILayout.Space(EditorGUI.indentLevel * 15);
                if (GUILayout.Button("Add New Button"))
                {
                    newMap.AddNewButton();
                    Repaint();
                }
                EditorGUILayout.EndHorizontal();
            }
        }
    }