Implement multiple selection

This commit is contained in:
smoogipoo
2019-10-31 17:25:30 +09:00
parent 8d50b155e8
commit 20aeb7aaff
2 changed files with 86 additions and 4 deletions

View File

@ -4,6 +4,7 @@
using System;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.Input;
using osu.Framework.Input.Events;
using osu.Game.Rulesets.Osu.Objects;
using osuTK;
@ -14,10 +15,11 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components
{
public Action<Vector2[]> ControlPointsChanged;
internal Container<PathControlPointPiece> Pieces { get; }
internal readonly Container<PathControlPointPiece> Pieces;
private readonly Slider slider;
private InputManager inputManager;
public PathControlPointVisualiser(Slider slider)
{
this.slider = slider;
@ -27,6 +29,13 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components
InternalChild = Pieces = new Container<PathControlPointPiece> { RelativeSizeAxes = Axes.Both };
}
protected override void LoadComplete()
{
base.LoadComplete();
inputManager = GetContainingInputManager();
}
protected override void Update()
{
base.Update();
@ -53,8 +62,13 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components
private void selectPiece(int index)
{
foreach (var piece in Pieces)
piece.IsSelected.Value = piece.Index == index;
if (inputManager.CurrentState.Keyboard.ControlPressed)
Pieces[index].IsSelected.Value = true;
else
{
foreach (var piece in Pieces)
piece.IsSelected.Value = piece.Index == index;
}
}
}
}