示例#1
0
        /// <summary>
        /// Handle a mask requesting selection.
        /// </summary>
        /// <param name="mask">The mask.</param>
        public void HandleSelectionRequested(HitObjectMask mask, InputState state)
        {
            if (state.Keyboard.ControlPressed)
            {
                if (mask.IsSelected)
                {
                    mask.Deselect();
                }
                else
                {
                    mask.Select();
                }
            }
            else
            {
                if (mask.IsSelected)
                {
                    return;
                }

                DeselectAll?.Invoke();
                mask.Select();
            }

            UpdateVisibility();
        }
示例#2
0
        /// <summary>
        /// Handle a mask becoming deselected.
        /// </summary>
        /// <param name="mask">The mask.</param>
        public void HandleDeselected(HitObjectMask mask)
        {
            selectedMasks.Remove(mask);

            // We don't want to update visibility if > 0, since we may be deselecting masks during drag-selection
            if (selectedMasks.Count == 0)
            {
                UpdateVisibility();
            }
        }
示例#3
0
        public void HandleDrag(HitObjectMask m, InputState state)
        {
            // Todo: Various forms of snapping

            foreach (var mask in selectedMasks)
            {
                switch (mask.HitObject.HitObject)
                {
                case IHasEditablePosition editablePosition:
                    editablePosition.OffsetPosition(state.Mouse.Delta);
                    break;
                }
            }
        }
示例#4
0
 /// <summary>
 /// Handle a mask becoming selected.
 /// </summary>
 /// <param name="mask">The mask.</param>
 public void HandleSelected(HitObjectMask mask) => selectedMasks.Add(mask);