void DeleteSelectedRows(SerializedProperty actionProperty) { var row = m_TreeView.GetSelectedRow(); var rowType = row.GetType(); // Remove composite bindings if (rowType == typeof(CompositeTreeItem)) { for (var i = row.children.Count - 1; i >= 0; i--) { var composite = (CompositeTreeItem)row.children[i]; InputActionSerializationHelpers.RemoveBinding(actionProperty, composite.index); } InputActionSerializationHelpers.RemoveBinding(actionProperty, row.index); } // Remove bindings if (rowType == typeof(BindingTreeItem)) { InputActionSerializationHelpers.RemoveBinding(actionProperty, row.index); } m_TreeView.SetSelection(new List <int>()); m_TreeView.Reload(); }
void DeleteSelectedRows() { var rows = m_TreeView.GetSelectedRows().ToArray(); foreach (var compositeGroup in rows.Where(r => r.GetType() == typeof(CompositeGroupTreeItem)).OrderByDescending(r => r.index).Cast <CompositeGroupTreeItem>()) { var actionMapProperty = (compositeGroup.parent.parent as InputTreeViewLine).elementProperty; var actionProperty = (compositeGroup.parent as ActionTreeItem).elementProperty; for (var i = compositeGroup.children.Count - 1; i >= 0; i--) { var composite = (CompositeTreeItem)compositeGroup.children[i]; InputActionSerializationHelpers.RemoveBinding(actionProperty, composite.index, actionMapProperty); } InputActionSerializationHelpers.RemoveBinding(actionProperty, compositeGroup.index, actionMapProperty); } foreach (var bindingRow in rows.Where(r => r.GetType() == typeof(BindingTreeItem)).OrderByDescending(r => r.index).Cast <BindingTreeItem>()) { var actionMapProperty = (bindingRow.parent.parent as InputTreeViewLine).elementProperty; var actionProperty = (bindingRow.parent as InputTreeViewLine).elementProperty; InputActionSerializationHelpers.RemoveBinding(actionProperty, bindingRow.index, actionMapProperty); } foreach (var actionRow in rows.Where(r => r.GetType() == typeof(ActionTreeItem)).OrderByDescending(r => r.index).Cast <ActionTreeItem>()) { var actionProperty = (actionRow).elementProperty; var actionMapProperty = (actionRow.parent as InputTreeViewLine).elementProperty; for (var i = actionRow.bindingsCount - 1; i >= 0; i--) { InputActionSerializationHelpers.RemoveBinding(actionProperty, i, actionMapProperty); } InputActionSerializationHelpers.DeleteAction(actionMapProperty, actionRow.index); } foreach (var mapRow in rows.Where(r => r.GetType() == typeof(ActionMapTreeItem)).OrderByDescending(r => r.index).Cast <ActionMapTreeItem>()) { InputActionSerializationHelpers.DeleteActionMap(m_SerializedObject, mapRow.index); } Apply(); OnSelectionChanged(); }
private void Initialize(SerializedProperty actionProperty, SerializedProperty actionMapProperty, bool displayHeader) { if (!displayHeader) { headerHeight = 2; } drawElementCallback = (rect, index, isActive, isFocused) => { var binding = serializedProperty != null ? serializedProperty.GetArrayElementAtIndex(index) : (SerializedProperty)list[index]; EditorGUI.PropertyField(rect, binding); }; drawHeaderCallback = (rect) => { if (displayHeader) { EditorGUI.LabelField(rect, "Bindings"); } }; drawNoneElementCallback = (rect) => { EditorGUI.LabelField(rect, s_NoBindingsText, EditorStyles.centeredGreyMiniLabel); }; onAddCallback = (list) => InputActionSerializationHelpers.AppendBinding(actionProperty, actionMapProperty); onRemoveCallback = (list) => InputActionSerializationHelpers.RemoveBinding(actionProperty, list.index, actionMapProperty); }
public void RemoveBinding(int compositeIndex) { InputActionSerializationHelpers.RemoveBinding(elementProperty, compositeIndex, m_ActionMapProperty); }