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))); }
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); } }
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; }
private Node?GetDeviceNode(InputDevice device) { var tags = InputDeviceUtility.GetDeviceTags(device.GetType()); if (tags != null && device.tagIndex != -1) { var tag = tags[device.tagIndex]; Node node; if (m_TagToNode.TryGetValue(tag, out node)) { return(node); } } return(null); }
void DrawButtonAxisSourceSummary(Rect rect, ButtonAxisSource source) { if ((Type)(source.negative.deviceType) == (Type)(source.positive.deviceType)) { EditorGUI.LabelField(rect, string.Format("{0} {1} & {2}", InputDeviceUtility.GetDeviceName(source.negative), InputDeviceUtility.GetDeviceControlName(source.negative), InputDeviceUtility.GetDeviceControlName(source.positive) ) ); } else { EditorGUI.LabelField(rect, string.Format("{0} & {1}", GetSourceString(source.negative), GetSourceString(source.positive))); } }
void DrawButtonAxisSourceSummary(Rect rect, ButtonAxisSource source) { ControlScheme scheme = m_ActionMapEditCopy.controlSchemes[selectedScheme]; var negativeDeviceSlot = scheme.GetDeviceSlot(source.negative.deviceKey); var positiveDeviceSlot = scheme.GetDeviceSlot(source.positive.deviceKey); if ((Type)(negativeDeviceSlot.type) == (Type)(positiveDeviceSlot.type)) { EditorGUI.LabelField(rect, string.Format("{0} {1} {2} & {3}", InputDeviceUtility.GetDeviceNameWithTag(negativeDeviceSlot), GetDeviceInstanceString(scheme, negativeDeviceSlot), InputDeviceUtility.GetDeviceControlName(negativeDeviceSlot, source.negative), InputDeviceUtility.GetDeviceControlName(positiveDeviceSlot, source.positive) ) ); } else { EditorGUI.LabelField(rect, string.Format("{0} & {1}", GetSourceString(source.negative), GetSourceString(source.positive))); } }
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; }
public Node GetDeviceNode(InputDevice device) { string[] tags; var deviceType = device.GetType(); if (!m_DeviceTypeTags.TryGetValue(deviceType, out tags)) { tags = InputDeviceUtility.GetDeviceTags(deviceType); m_DeviceTypeTags[deviceType] = tags; } if (tags != null && device.tagIndex != -1) { var tag = tags[device.tagIndex]; Node node; if (m_TagToNode.TryGetValue(tag, out node)) { return(node); } } return(Node.None); }
void DrawControlSchemeGUI() { ControlScheme scheme = m_ActionMapEditCopy.controlSchemes[selectedScheme]; EditorGUI.BeginChangeCheck(); string schemeName = EditorGUILayout.TextField("Control Scheme Name", scheme.name); if (EditorGUI.EndChangeCheck()) { scheme.name = schemeName; } for (int i = 0; i < scheme.deviceSlots.Count; i++) { var deviceSlot = scheme.deviceSlots[i]; Rect rect = EditorGUILayout.GetControlRect(); if (Event.current.type == EventType.MouseDown && rect.Contains(Event.current.mousePosition)) { m_SelectedDeviceIndex = i; Repaint(); } if (m_SelectedDeviceIndex == i) { GUI.DrawTexture(rect, EditorGUIUtility.whiteTexture); } string[] tagNames = null; Vector2 tagMaxSize = Vector2.zero; if (deviceSlot.type != null && deviceSlot.type.value != null) { tagNames = InputDeviceUtility.GetDeviceTags(deviceSlot.type.value); if (tagNames != null) { GUIContent content = new GUIContent(); for (var j = 0; j < tagNames.Length; j++) { content.text = tagNames[j]; Vector2 size = EditorStyles.popup.CalcSize(content); tagMaxSize = Vector2.Max(size, tagMaxSize); } } } rect.width -= tagMaxSize.x; // Adjust width to leave room for tag EditorGUI.BeginChangeCheck(); Type t = TypeGUI.TypeField(rect, new GUIContent("Device Type"), typeof(InputDevice), deviceSlot.type); if (EditorGUI.EndChangeCheck()) { deviceSlot.type = t; } if (tagNames != null) { EditorGUI.BeginChangeCheck(); // We want to have the ability to unset a tag after specifying one, so add an "Any" option var popupTags = new string[tagNames.Length + 1]; popupTags[0] = "Any"; tagNames.CopyTo(popupTags, 1); int tagIndex = deviceSlot.tagIndex + 1; rect.x += rect.width; rect.width = tagMaxSize.x; tagIndex = EditorGUI.Popup( rect, tagIndex, popupTags); if (EditorGUI.EndChangeCheck()) { deviceSlot.tagIndex = tagIndex - 1; } } } // Device remove and add buttons EditorGUILayout.BeginHorizontal(); { GUILayout.Space(15 * EditorGUI.indentLevel); if (GUILayout.Button(Styles.iconToolbarMinus, GUIStyle.none)) { RemoveDevice(); } if (GUILayout.Button(Styles.iconToolbarPlus, GUIStyle.none)) { AddDevice(); } GUILayout.FlexibleSpace(); } EditorGUILayout.EndHorizontal(); // Pad this area with spacing so all control schemes use same heights, // and the actions table below doesn't move when switching control scheme. int maxDevices = 0; for (int i = 0; i < m_ActionMapEditCopy.controlSchemes.Count; i++) { maxDevices = Mathf.Max(maxDevices, m_ActionMapEditCopy.controlSchemes[i].deviceSlots.Count); } int extraLines = maxDevices - scheme.deviceSlots.Count; EditorGUILayout.GetControlRect(true, extraLines * (EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing)); }
string GetSourceString(InputControlDescriptor source) { return(string.Format("{0} {1}", InputDeviceUtility.GetDeviceName(source), InputDeviceUtility.GetDeviceControlName(source))); }
void DrawControlSchemeGUI() { ControlScheme scheme = m_ActionMapEditCopy.controlSchemes[selectedScheme]; EditorGUI.BeginChangeCheck(); string schemeName = EditorGUILayout.TextField("Control Scheme Name", scheme.name); if (EditorGUI.EndChangeCheck()) { scheme.name = schemeName; } string[] deviceNames = InputDeviceUtility.GetDeviceNames(); for (int i = 0; i < scheme.serializableDeviceTypes.Count; i++) { Rect rect = EditorGUILayout.GetControlRect(); if (Event.current.type == EventType.MouseDown && rect.Contains(Event.current.mousePosition)) { m_SelectedDeviceIndex = i; Repaint(); } if (m_SelectedDeviceIndex == i) { GUI.DrawTexture(rect, EditorGUIUtility.whiteTexture); } EditorGUI.BeginChangeCheck(); int deviceIndex = EditorGUI.Popup( rect, "Device Type", InputDeviceUtility.GetDeviceIndex(scheme.serializableDeviceTypes[i]), deviceNames); if (EditorGUI.EndChangeCheck()) { scheme.serializableDeviceTypes[i].value = InputDeviceUtility.GetDeviceType(deviceIndex); } } // Device remove and add buttons EditorGUILayout.BeginHorizontal(); { GUILayout.Space(15 * EditorGUI.indentLevel); if (GUILayout.Button(Styles.iconToolbarMinus, GUIStyle.none)) { RemoveDevice(); } if (GUILayout.Button(Styles.iconToolbarPlus, GUIStyle.none)) { AddDevice(); } GUILayout.FlexibleSpace(); } EditorGUILayout.EndHorizontal(); // Pad this area with spacing so all control schemes use same heights, // and the actions table below doesn't move when switching control scheme. int maxDevices = 0; for (int i = 0; i < m_ActionMapEditCopy.controlSchemes.Count; i++) { maxDevices = Mathf.Max(maxDevices, m_ActionMapEditCopy.controlSchemes[i].serializableDeviceTypes.Count); } int extraLines = maxDevices - scheme.serializableDeviceTypes.Count; EditorGUILayout.GetControlRect(true, extraLines * (EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing)); }
public List <DomainEntry> GetControlEntriesOfType(int domainId, Type controlType) { DeviceSlot slot = m_TrackedPoseDriver.deviceSlot; return(InputDeviceUtility.GetDeviceControlEntriesOfType(slot == null ? null : slot.type, typeof(PoseControl))); }