Esempio n. 1
0
    /// <summary>
    ///
    /// </summary>
    public virtual void DoButtonsFoldout()
    {
        GUILayout.BeginHorizontal(GUILayout.MaxWidth(210));
        m_ButtonsFoldout = EditorGUILayout.Foldout(m_ButtonsFoldout, m_ButtonsFoldout && m_Component.ButtonKeys.Count > 0 ? "Button Name" : "Buttons");
        if (m_ButtonsFoldout && m_Component.ButtonKeys.Count > 0)
        {
            GUILayout.Space(80);
            EditorGUILayout.LabelField("Key");
        }
        GUILayout.EndHorizontal();

        if (m_Component.ButtonKeys.Count >= m_Component.ButtonKeys2.Count)
        {
            m_Component.CreateMissingSecondaryButtons();
        }

        if (m_ButtonsFoldout)
        {
            if (m_Component.ButtonKeys != null)
            {
                GUILayout.Space(10);

                for (int i = 0; i < m_Component.ButtonKeys.Count; ++i)
                {
                    GUILayout.BeginHorizontal();
                    GUILayout.Space(20);

                    m_Component.ButtonKeys[i] = EditorGUILayout.TextField(m_Component.ButtonKeys[i], GUILayout.MaxWidth(100), GUILayout.MinWidth(100));
                    GUILayout.Space(10);

                    // primary bindings
                    m_Component.ButtonValues[i] = (KeyCode)EditorGUILayout.EnumPopup(m_Component.ButtonValues[i]);
                    m_Component.Buttons[m_Component.ButtonKeys[i]] = (KeyCode)m_Component.ButtonValues[i];

                    // secondary bindings
                    m_Component.ButtonValues2[i] = (KeyCode)EditorGUILayout.EnumPopup(m_Component.ButtonValues2[i]);
                    m_Component.Buttons2[m_Component.ButtonKeys2[i]] = (KeyCode)m_Component.ButtonValues2[i];

                    if (GUILayout.Button("Remove", vp_EditorGUIUtility.SmallButtonStyle, GUILayout.MinWidth(50), GUILayout.MaxWidth(50), GUILayout.MinHeight(15)))
                    {
                        m_Component.ButtonKeys.RemoveAt(i);
                        m_Component.ButtonValues.RemoveAt(i);
                        --i;
                    }

                    GUI.backgroundColor = Color.white;

                    GUILayout.Space(20);

                    GUILayout.EndHorizontal();

                    GUILayout.Space(5);
                }
            }

            if (m_Component.ButtonKeys.Count == 0)
            {
                GUILayout.BeginHorizontal();
                GUILayout.Space(20);
                EditorGUILayout.HelpBox("There are no Input Buttons. Click \"Add Input Button\" to add a new button or \"Restore Defaults\" To restore the default buttons.", MessageType.Info);
                GUILayout.Space(20);
                GUILayout.EndHorizontal();
            }

            GUILayout.Space(8f);

            GUILayout.BeginHorizontal();

            GUILayout.Space(10f);

            if (GUILayout.Button("Add Input Button", GUILayout.MinWidth(150), GUILayout.MinHeight(25)))
            {
                m_Component.AddButton("Button " + m_Component.ButtonKeys.Count, KeyCode.None);
            }
            if (m_Component.ButtonKeys.Count == 0)
            {
                if (GUILayout.Button("Restore Button Defaults", GUILayout.MinWidth(150), GUILayout.MinHeight(25)))
                {
                    m_Component.SetupDefaults("Buttons");
                }
            }
            GUI.backgroundColor = Color.white;
            GUILayout.Space(10f);
            GUILayout.EndHorizontal();

            DrawSeparator();
        }
    }