Пример #1
0
    string GetSourceString(InputControlDescriptor source)
    {
        ControlScheme scheme     = m_ActionMapEditCopy.controlSchemes[selectedScheme];
        var           deviceSlot = scheme.GetDeviceSlot(source.deviceKey);

        return(string.Format("{0} {1} {2}", InputDeviceUtility.GetDeviceNameWithTag(deviceSlot), GetDeviceInstanceString(scheme, deviceSlot), InputDeviceUtility.GetDeviceControlName(deviceSlot, source)));
    }
Пример #2
0
    void AddButtonAxisSource(object data)
    {
        ControlBinding binding = (ControlBinding)data;
        var            source  = new ButtonAxisSource(new InputControlDescriptor(), new InputControlDescriptor());

        binding.buttonAxisSources.Add(source);

        m_SelectedSource           = null;
        m_SelectedButtonAxisSource = source;
    }
 void DisplaySource(InputControlDescriptor descriptor)
 {
     if (descriptor == descriptorToBeAssigned)
     {
         GUILayout.Button("...", GUILayout.Width(k_BindingWidth));
     }
     else if (GUILayout.Button(InputDeviceUtility.GetDeviceControlName(descriptor), GUILayout.Width(k_BindingWidth)))
     {
         descriptorToBeAssigned = descriptor;
         InputSystem.ListenForBinding(BindInputControl);
     }
 }
Пример #4
0
    void DrawSourceSummary(Rect rect, string label, InputControlDescriptor source)
    {
        if (m_SelectedSource == source)
        {
            GUI.DrawTexture(rect, EditorGUIUtility.whiteTexture);
        }

        rect       = EditorGUI.PrefixLabel(rect, new GUIContent(label));
        rect.width = (rect.width - 4) * 0.5f;

        int indentLevel = EditorGUI.indentLevel;

        EditorGUI.indentLevel = 0;

        var scheme      = m_ActionMapEditCopy.controlSchemes[selectedScheme];
        var deviceSlots = scheme.deviceSlots;

        string[] deviceNames = deviceSlots.Select(slot =>
        {
            if (slot.type == null)
            {
                return(string.Empty);
            }

            return(string.Format("{0} {1}", InputDeviceUtility.GetDeviceNameWithTag(slot), GetDeviceInstanceString(scheme, slot)));
        }).ToArray();

        EditorGUI.BeginChangeCheck();
        int deviceIndex = EditorGUI.Popup(rect, deviceSlots.FindIndex(slot =>
        {
            return(source != null && source.deviceKey != DeviceSlot.kInvalidKey && slot.key == source.deviceKey);
        }), deviceNames);

        if (EditorGUI.EndChangeCheck())
        {
            source.deviceKey = deviceSlots[deviceIndex].key;
        }

        rect.x += rect.width + 4;

        var deviceSlot = scheme.GetDeviceSlot(source.deviceKey);

        string[] controlNames = InputDeviceUtility.GetDeviceControlNames(deviceSlot != null ? deviceSlot.type : null);
        EditorGUI.BeginChangeCheck();
        int controlIndex = EditorGUI.Popup(rect, source.controlIndex, controlNames);

        if (EditorGUI.EndChangeCheck())
        {
            source.controlIndex = controlIndex;
        }

        EditorGUI.indentLevel = indentLevel;
    }
Пример #5
0
    void DrawSourceSummary(InputControlDescriptor source)
    {
        Rect rect = EditorGUILayout.GetControlRect();

        if (Event.current.type == EventType.MouseDown && rect.Contains(Event.current.mousePosition))
        {
            m_SelectedButtonAxisSource = null;
            m_SelectedSource           = source;
            Repaint();
        }
        if (m_SelectedSource == source)
        {
            GUI.DrawTexture(rect, EditorGUIUtility.whiteTexture);
        }

        DrawSourceSummary(rect, "Source", source);

        EditorGUILayout.Space();
    }
Пример #6
0
    void DrawButtonAxisSourceSummary(ButtonAxisSource source)
    {
        Rect rect = EditorGUILayout.GetControlRect(true, EditorGUIUtility.singleLineHeight * 2 + EditorGUIUtility.standardVerticalSpacing);

        if (Event.current.type == EventType.MouseDown && rect.Contains(Event.current.mousePosition))
        {
            m_SelectedSource           = null;
            m_SelectedButtonAxisSource = source;
            Repaint();
        }
        if (m_SelectedButtonAxisSource == source)
        {
            GUI.DrawTexture(rect, EditorGUIUtility.whiteTexture);
        }

        rect.height = EditorGUIUtility.singleLineHeight;
        DrawSourceSummary(rect, "Source (negative)", source.negative);
        rect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
        DrawSourceSummary(rect, "Source (positive)", source.positive);

        EditorGUILayout.Space();
    }
Пример #7
0
    void DrawSourceSummary(Rect rect, string label, InputControlDescriptor source)
    {
        if (m_SelectedSource == source)
        {
            GUI.DrawTexture(rect, EditorGUIUtility.whiteTexture);
        }

        rect       = EditorGUI.PrefixLabel(rect, new GUIContent(label));
        rect.width = (rect.width - 4) * 0.5f;

        int indentLevel = EditorGUI.indentLevel;

        EditorGUI.indentLevel = 0;

        List <Type> types = m_ActionMapEditCopy.controlSchemes[selectedScheme].deviceTypes.ToList();

        string[] deviceNames = types.Select(e => e == null ? string.Empty : e.Name).ToArray();
        EditorGUI.BeginChangeCheck();
        int deviceIndex = EditorGUI.Popup(rect, types.IndexOf(source.deviceType), deviceNames);

        if (EditorGUI.EndChangeCheck())
        {
            source.deviceType = types[deviceIndex];
        }

        rect.x += rect.width + 4;

        string[] controlNames = InputDeviceUtility.GetDeviceControlNames(source.deviceType);
        EditorGUI.BeginChangeCheck();
        int controlIndex = EditorGUI.Popup(rect, source.controlIndex, controlNames);

        if (EditorGUI.EndChangeCheck())
        {
            source.controlIndex = controlIndex;
        }

        EditorGUI.indentLevel = indentLevel;
    }
 bool BindInputControl(InputControl control)
 {
     m_ActionMapInput.BindControl(descriptorToBeAssigned, control, false);
     descriptorToBeAssigned = null;
     return(true);
 }
Пример #9
0
 void DrawSourceSummary(Rect rect, InputControlDescriptor source)
 {
     EditorGUI.LabelField(rect, GetSourceString(source));
 }
Пример #10
0
 string GetSourceString(InputControlDescriptor source)
 {
     return(string.Format("{0} {1}", InputDeviceUtility.GetDeviceName(source), InputDeviceUtility.GetDeviceControlName(source)));
 }