diff --git a/osu.Game/Rulesets/Objects/SliderPath.cs b/osu.Game/Rulesets/Objects/SliderPath.cs
index 3083fcfccb..e76699ac04 100644
--- a/osu.Game/Rulesets/Objects/SliderPath.cs
+++ b/osu.Game/Rulesets/Objects/SliderPath.cs
@@ -156,6 +156,38 @@ namespace osu.Game.Rulesets.Objects
return interpolateVertices(indexOfDistance(d), d);
}
+ ///
+ /// Returns the control points belonging to the same segment as the one given.
+ /// The first point has a PathType which all other points inherit.
+ ///
+ /// One of the control points in the segment.
+ ///
+ public List PointsInSegment(PathControlPoint controlPoint)
+ {
+ bool found = false;
+ List pointsInCurrentSegment = new List();
+ foreach (PathControlPoint point in ControlPoints)
+ {
+ if (point.Type.Value is PathType)
+ {
+ if (!found)
+ pointsInCurrentSegment.Clear();
+ else
+ {
+ pointsInCurrentSegment.Add(point);
+ break;
+ }
+ }
+
+ pointsInCurrentSegment.Add(point);
+
+ if (point == controlPoint)
+ found = true;
+ }
+
+ return pointsInCurrentSegment;
+ }
+
private void invalidate()
{
pathCache.Invalidate();