mirror of
https://github.com/osukey/osukey.git
synced 2025-08-06 16:13:57 +09:00
Cleanup slidercurve calculation
This commit is contained in:
@ -27,6 +27,12 @@ namespace osu.Game.Rulesets.Objects
|
|||||||
{
|
{
|
||||||
switch (CurveType)
|
switch (CurveType)
|
||||||
{
|
{
|
||||||
|
case CurveType.Linear:
|
||||||
|
var result = new List<Vector2>(subControlPoints.Length);
|
||||||
|
foreach (var c in subControlPoints)
|
||||||
|
result.Add(c);
|
||||||
|
|
||||||
|
return result;
|
||||||
case CurveType.PerfectCurve:
|
case CurveType.PerfectCurve:
|
||||||
//we can only use CircularArc iff we have exactly three control points and no dissection.
|
//we can only use CircularArc iff we have exactly three control points and no dissection.
|
||||||
if (ControlPoints.Length != 3 || subControlPoints.Length != 3)
|
if (ControlPoints.Length != 3 || subControlPoints.Length != 3)
|
||||||
@ -66,18 +72,9 @@ namespace osu.Game.Rulesets.Objects
|
|||||||
{
|
{
|
||||||
ReadOnlySpan<Vector2> cpSpan = ControlPoints.AsSpan().Slice(start, end - start);
|
ReadOnlySpan<Vector2> cpSpan = ControlPoints.AsSpan().Slice(start, end - start);
|
||||||
|
|
||||||
if (CurveType == CurveType.Linear)
|
foreach (Vector2 t in calculateSubpath(cpSpan))
|
||||||
{
|
if (calculatedPath.Count == 0 || calculatedPath.Last() != t)
|
||||||
foreach (var t in cpSpan)
|
calculatedPath.Add(t);
|
||||||
if (calculatedPath.Count == 0 || calculatedPath.Last() != t)
|
|
||||||
calculatedPath.Add(t);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
foreach (Vector2 t in calculateSubpath(cpSpan))
|
|
||||||
if (calculatedPath.Count == 0 || calculatedPath.Last() != t)
|
|
||||||
calculatedPath.Add(t);
|
|
||||||
}
|
|
||||||
|
|
||||||
start = end;
|
start = end;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user