diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/SliderTailPiece.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/SliderTailPiece.cs index 7d39f04596..2ebdf87606 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/SliderTailPiece.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/SliderTailPiece.cs @@ -20,6 +20,11 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components { public partial class SliderTailPiece : SliderCircleOverlay { + /// + /// Whether this slider tail is draggable, changing the distance of the slider. + /// + public bool IsDraggable { get; set; } + /// /// Whether this is currently being dragged. /// @@ -60,7 +65,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components { Color4 colour = colours.Yellow; - if (IsHovered && inputManager.CurrentState.Keyboard.ShiftPressed + if (IsHovered && IsDraggable && !inputManager.HoveredDrawables.Any(o => o is PathControlPointPiece)) colour = colour.Lighten(1); @@ -69,7 +74,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components protected override bool OnDragStart(DragStartEvent e) { - if (e.Button == MouseButton.Right || !inputManager.CurrentState.Keyboard.ShiftPressed) + if (e.Button == MouseButton.Right || !IsDraggable) return false; isDragging = true; @@ -103,6 +108,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components trimExcessControlPoints(Slider.Path); isDragging = false; + IsDraggable = false; editorBeatmap?.EndChange(); } diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs index 2c239a40c8..4a949f5b48 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/SliderSelectionBlueprint.cs @@ -409,6 +409,10 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders addControlPoint(rightClickPosition); changeHandler?.EndChange(); }), + new OsuMenuItem("Adjust distance", MenuItemType.Standard, () => + { + TailPiece.IsDraggable = true; + }), new OsuMenuItem("Convert to stream", MenuItemType.Destructive, convertToStream), };