diff --git a/osu.Game/Rulesets/Objects/SliderPath.cs b/osu.Game/Rulesets/Objects/SliderPath.cs
index 9d68e1337a..bbeb03992e 100644
--- a/osu.Game/Rulesets/Objects/SliderPath.cs
+++ b/osu.Game/Rulesets/Objects/SliderPath.cs
@@ -37,13 +37,8 @@ namespace osu.Game.Rulesets.Objects
///
/// Creates a new .
///
- /// An optional set of s to initialise the path with.
- /// A user-set distance of the path that may be shorter or longer than the true distance between all control points.
- /// The path will be shortened/lengthened to match this length. If null, the path will use the true distance between all control points.
- [JsonConstructor]
- public SliderPath(PathControlPoint[] controlPoints = null, double? expectedDistance = null)
+ public SliderPath()
{
- ExpectedDistance.Value = expectedDistance;
ExpectedDistance.ValueChanged += _ => pathCache.Invalidate();
ControlPoints.ItemsAdded += items =>
@@ -62,11 +57,33 @@ namespace osu.Game.Rulesets.Objects
onControlPointChanged();
};
- ControlPoints.AddRange(controlPoints);
-
void onControlPointChanged() => pathCache.Invalidate();
}
+ ///
+ /// Creates a new .
+ ///
+ /// An optional set of s to initialise the path with.
+ /// A user-set distance of the path that may be shorter or longer than the true distance between all control points.
+ /// The path will be shortened/lengthened to match this length. If null, the path will use the true distance between all control points.
+ [JsonConstructor]
+ public SliderPath(PathControlPoint[] controlPoints, double? expectedDistance = null)
+ : this()
+ {
+ ControlPoints.AddRange(controlPoints);
+ ExpectedDistance.Value = expectedDistance;
+ }
+
+ public SliderPath(PathType type, Vector2[] controlPoints, double? expectedDistance = null)
+ : this()
+ {
+ foreach (var c in controlPoints)
+ ControlPoints.Add(new PathControlPoint { Position = { Value = c } });
+ ControlPoints[0].Type.Value = type;
+
+ ExpectedDistance.Value = expectedDistance;
+ }
+
///
/// The distance of the path after lengthening/shortening to account for .
///