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();
        }
Exemple #2
0
        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);
        }
Exemple #4
0
 public void RemoveBinding(int compositeIndex)
 {
     InputActionSerializationHelpers.RemoveBinding(elementProperty, compositeIndex, m_ActionMapProperty);
 }