mirror of
https://github.com/ppy/osu.git
synced 2025-02-06 08:12:55 +08:00
Merge pull request #395 from peppy/general-fixes
Fix incorrect slider logic (wrong variable name).
This commit is contained in:
commit
ed90c9d3e2
@ -29,26 +29,21 @@ namespace osu.Game.Modes.Osu.Objects
|
|||||||
case CurveTypes.Linear:
|
case CurveTypes.Linear:
|
||||||
return subControlPoints;
|
return subControlPoints;
|
||||||
case CurveTypes.PerfectCurve:
|
case CurveTypes.PerfectCurve:
|
||||||
// If we have a different amount than 3 control points, use bezier for perfect curves.
|
//we can only use CircularArc iff we have exactly three control points and no dissection.
|
||||||
if (ControlPoints.Count != 3)
|
if (ControlPoints.Count != 3 || subControlPoints.Count != 3)
|
||||||
return new BezierApproximator(subControlPoints).CreateBezier();
|
break;
|
||||||
else
|
|
||||||
{
|
|
||||||
Debug.Assert(subControlPoints.Count == 3);
|
|
||||||
|
|
||||||
// Here we have exactly 3 control points. Attempt to fit a circular arc.
|
// Here we have exactly 3 control points. Attempt to fit a circular arc.
|
||||||
List<Vector2> subpath = new CircularArcApproximator(subControlPoints[0], subControlPoints[1], subControlPoints[2]).CreateArc();
|
List<Vector2> subpath = new CircularArcApproximator(subControlPoints[0], subControlPoints[1], subControlPoints[2]).CreateArc();
|
||||||
|
|
||||||
if (subpath.Count == 0)
|
// If for some reason a circular arc could not be fit to the 3 given points, fall back to a numerically stable bezier approximation.
|
||||||
// For some reason a circular arc could not be fit to the 3 given points. Fall back
|
if (subpath.Count == 0)
|
||||||
// to a numerically stable bezier approximation.
|
break;
|
||||||
subpath = new BezierApproximator(subControlPoints).CreateBezier();
|
|
||||||
|
|
||||||
return subpath;
|
return subpath;
|
||||||
}
|
|
||||||
default:
|
|
||||||
return new BezierApproximator(subControlPoints).CreateBezier();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return new BezierApproximator(subControlPoints).CreateBezier();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void calculatePath()
|
private void calculatePath()
|
||||||
@ -181,7 +176,7 @@ namespace osu.Game.Modes.Osu.Objects
|
|||||||
path.Clear();
|
path.Clear();
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (; i < calculatedPath.Count && cumulativeLength[i] < d0; ++i);
|
for (; i < calculatedPath.Count && cumulativeLength[i] < d0; ++i) ;
|
||||||
|
|
||||||
path.Add(interpolateVertices(i, d0) + Offset);
|
path.Add(interpolateVertices(i, d0) + Offset);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user