From 5d272bef9778d590b84e1e97edfde3d64a8b68de Mon Sep 17 00:00:00 2001 From: Leon Gebler Date: Fri, 26 Mar 2021 16:28:04 +0100 Subject: [PATCH] Remember ContolPoint positions instead of recalculating them --- osu.Game.Rulesets.Osu/Edit/OsuSelectionHandler.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Edit/OsuSelectionHandler.cs b/osu.Game.Rulesets.Osu/Edit/OsuSelectionHandler.cs index ae92b12fd2..b9578b4ae9 100644 --- a/osu.Game.Rulesets.Osu/Edit/OsuSelectionHandler.cs +++ b/osu.Game.Rulesets.Osu/Edit/OsuSelectionHandler.cs @@ -197,8 +197,13 @@ namespace osu.Game.Rulesets.Osu.Edit Quad sliderQuad = getSurroundingQuad(slider.Path.ControlPoints.Select(p => p.Position.Value)); Vector2 pathRelativeDeltaScale = new Vector2(1 + scale.X / sliderQuad.Width, 1 + scale.Y / sliderQuad.Height); + Queue oldControlPoints = new Queue(); + foreach (var point in slider.Path.ControlPoints) + { + oldControlPoints.Enqueue(point.Position.Value); point.Position.Value *= pathRelativeDeltaScale; + } //if sliderhead or sliderend end up outside playfield, revert scaling. Quad scaledQuad = getSurroundingQuad(new OsuHitObject[] { slider }); @@ -207,8 +212,8 @@ namespace osu.Game.Rulesets.Osu.Edit if (xInBounds && yInBounds) return true; - foreach (var point in slider.Path.ControlPoints) - point.Position.Value *= new Vector2(1 / pathRelativeDeltaScale.X, 1 / pathRelativeDeltaScale.Y); + foreach(var point in slider.Path.ControlPoints) + point.Position.Value = oldControlPoints.Dequeue(); return true; }