/// <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(); }
/// <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(); } }
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; } } }
/// <summary> /// Handle a mask becoming selected. /// </summary> /// <param name="mask">The mask.</param> public void HandleSelected(HitObjectMask mask) => selectedMasks.Add(mask);