Ejemplo n.º 1
0
        private void OnDelete(object data)
        {
            var list = (IList <int>)data;

            // Sort actions by action index such that we delete actions from high to
            // low indices. This way indices won't shift as we delete actions.
            var array = list.Select(x => FindItem(x, rootItem)).ToArray();

            Array.Sort(array, (a, b) =>
            {
                var aActionItem = a as ActionItem;
                var bActionItem = b as ActionItem;

                if (aActionItem != null && bActionItem != null)
                {
                    if (aActionItem.actionIndex < bActionItem.actionIndex)
                    {
                        return(1);
                    }
                    if (aActionItem.actionIndex > bActionItem.actionIndex)
                    {
                        return(-1);
                    }
                }

                return(0);
            });

            // First delete actions, then sets.
            foreach (var item in array)
            {
                if (item is ActionItem)
                {
                    var actionItem    = (ActionItem)item;
                    var actionSetItem = (ActionSetItem)actionItem.parent;
                    InputActionSerializationHelpers.DeleteAction(actionSetItem.property, actionItem.actionIndex);
                }
            }
            foreach (var item in array)
            {
                if (item is ActionSetItem)
                {
                    var actionSetItem = (ActionSetItem)item;
                    InputActionSerializationHelpers.DeleteActionMap(actionSetItem.property.serializedObject, actionSetItem.actionSetIndex);
                }
            }

            m_ApplyAction();
            Reload();
        }
Ejemplo n.º 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();
        }
Ejemplo n.º 3
0
 public void DeleteAction(int actionRowIndex)
 {
     InputActionSerializationHelpers.DeleteAction(elementProperty, actionRowIndex);
 }