diff --git a/osu.Game/Rulesets/Timing/MultiplierControlPoint.cs b/osu.Game/Rulesets/Timing/MultiplierControlPoint.cs
index a5bd6bfde7..4988bac5ce 100644
--- a/osu.Game/Rulesets/Timing/MultiplierControlPoint.cs
+++ b/osu.Game/Rulesets/Timing/MultiplierControlPoint.cs
@@ -18,9 +18,14 @@ namespace osu.Game.Rulesets.Timing
public double StartTime;
///
- /// The multiplier which this provides.
+ /// The aggregate multiplier which this provides.
///
- public double Multiplier => 1000 / TimingPoint.BeatLength * DifficultyPoint.SpeedMultiplier;
+ public double Multiplier => Velocity * DifficultyPoint.SpeedMultiplier * 1000 / TimingPoint.BeatLength;
+
+ ///
+ /// The velocity multiplier.
+ ///
+ public double Velocity = 1;
///
/// The that provides the timing information for this .
@@ -48,18 +53,6 @@ namespace osu.Game.Rulesets.Timing
StartTime = startTime;
}
- ///
- /// Creates a by copying another .
- ///
- /// The start time of this .
- /// The to copy.
- public MultiplierControlPoint(double startTime, MultiplierControlPoint other)
- : this(startTime)
- {
- TimingPoint = other.TimingPoint;
- DifficultyPoint = other.DifficultyPoint;
- }
-
// ReSharper disable once ImpureMethodCallOnReadonlyValueField
public int CompareTo(MultiplierControlPoint other) => StartTime.CompareTo(other?.StartTime);
}
diff --git a/osu.Game/Rulesets/UI/Scrolling/ScrollingRulesetContainer.cs b/osu.Game/Rulesets/UI/Scrolling/ScrollingRulesetContainer.cs
index 3fc67e4e34..41cdd6c06f 100644
--- a/osu.Game/Rulesets/UI/Scrolling/ScrollingRulesetContainer.cs
+++ b/osu.Game/Rulesets/UI/Scrolling/ScrollingRulesetContainer.cs
@@ -60,6 +60,7 @@ namespace osu.Game.Rulesets.UI.Scrolling
return new MultiplierControlPoint(c.Time)
{
+ Velocity = Beatmap.BeatmapInfo.BaseDifficulty.SliderMultiplier,
TimingPoint = lastTimingPoint,
DifficultyPoint = lastDifficultyPoint
};
@@ -78,7 +79,7 @@ namespace osu.Game.Rulesets.UI.Scrolling
// If we have no control points, add a default one
if (DefaultControlPoints.Count == 0)
- DefaultControlPoints.Add(new MultiplierControlPoint());
+ DefaultControlPoints.Add(new MultiplierControlPoint { Velocity = Beatmap.BeatmapInfo.BaseDifficulty.SliderMultiplier });
DefaultControlPoints.ForEach(c => applySpeedAdjustment(c, Playfield));
}
@@ -88,22 +89,5 @@ namespace osu.Game.Rulesets.UI.Scrolling
playfield.HitObjects.AddControlPoint(controlPoint);
playfield.NestedPlayfields?.OfType().ForEach(p => applySpeedAdjustment(controlPoint, p));
}
-
- ///
- /// Generates a with the default timing change/difficulty change from the beatmap at a time.
- ///
- /// The time to create the control point at.
- /// The default at .
- public MultiplierControlPoint CreateControlPointAt(double time)
- {
- if (DefaultControlPoints.Count == 0)
- return new MultiplierControlPoint(time);
-
- int index = DefaultControlPoints.BinarySearch(new MultiplierControlPoint(time));
- if (index < 0)
- return new MultiplierControlPoint(time);
-
- return new MultiplierControlPoint(time, DefaultControlPoints[index]);
- }
}
}