mirror of
https://github.com/ppy/osu.git
synced 2025-01-12 15:22:55 +08:00
Fix span piece being incorrect in some drag scenarios
This commit is contained in:
parent
665530f1c3
commit
61f906d9c4
@ -48,6 +48,7 @@ namespace osu.Game.Rulesets.Taiko.Edit.Blueprints
|
|||||||
}
|
}
|
||||||
|
|
||||||
private double originalStartTime;
|
private double originalStartTime;
|
||||||
|
private Vector2 originalPosition;
|
||||||
|
|
||||||
protected override bool OnMouseDown(MouseDownEvent e)
|
protected override bool OnMouseDown(MouseDownEvent e)
|
||||||
{
|
{
|
||||||
@ -73,22 +74,25 @@ namespace osu.Game.Rulesets.Taiko.Edit.Blueprints
|
|||||||
|
|
||||||
if (PlacementActive)
|
if (PlacementActive)
|
||||||
{
|
{
|
||||||
if (result.Time is double endTime)
|
if (result.Time is double dragTime)
|
||||||
{
|
{
|
||||||
if (endTime < originalStartTime)
|
if (dragTime < originalStartTime)
|
||||||
{
|
{
|
||||||
HitObject.StartTime = endTime;
|
HitObject.StartTime = dragTime;
|
||||||
spanPlacementObject.Duration = Math.Abs(endTime - originalStartTime);
|
spanPlacementObject.Duration = Math.Abs(dragTime - originalStartTime);
|
||||||
headPiece.Position = ToLocalSpace(result.ScreenSpacePosition);
|
headPiece.Position = ToLocalSpace(result.ScreenSpacePosition);
|
||||||
lengthPiece.X = headPiece.X;
|
tailPiece.Position = originalPosition;
|
||||||
lengthPiece.Width = tailPiece.X - headPiece.X;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
spanPlacementObject.Duration = Math.Abs(endTime - originalStartTime);
|
HitObject.StartTime = originalStartTime;
|
||||||
|
spanPlacementObject.Duration = Math.Abs(dragTime - originalStartTime);
|
||||||
tailPiece.Position = ToLocalSpace(result.ScreenSpacePosition);
|
tailPiece.Position = ToLocalSpace(result.ScreenSpacePosition);
|
||||||
lengthPiece.Width = tailPiece.X - headPiece.X;
|
headPiece.Position = originalPosition;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lengthPiece.X = headPiece.X;
|
||||||
|
lengthPiece.Width = tailPiece.X - headPiece.X;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -96,7 +100,10 @@ namespace osu.Game.Rulesets.Taiko.Edit.Blueprints
|
|||||||
lengthPiece.Position = headPiece.Position = tailPiece.Position = ToLocalSpace(result.ScreenSpacePosition);
|
lengthPiece.Position = headPiece.Position = tailPiece.Position = ToLocalSpace(result.ScreenSpacePosition);
|
||||||
|
|
||||||
if (result.Time is double startTime)
|
if (result.Time is double startTime)
|
||||||
|
{
|
||||||
originalStartTime = HitObject.StartTime = startTime;
|
originalStartTime = HitObject.StartTime = startTime;
|
||||||
|
originalPosition = ToLocalSpace(result.ScreenSpacePosition);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user