Always encode perfect curves as explicit segments

This commit is contained in:
Leon Gebler 2021-04-05 18:01:16 +02:00
parent d4c55070e7
commit d81f270e21
1 changed files with 3 additions and 2 deletions

View File

@ -333,9 +333,10 @@ private void addPathData(TextWriter writer, IHasPath pathData, Vector2 position)
// Explicit segments have a new format in which the type is injected into the middle of the control point string. // Explicit segments have a new format in which the type is injected into the middle of the control point string.
// To preserve compatibility with osu-stable as much as possible, explicit segments with the same type are converted to use implicit segments by duplicating the control point. // To preserve compatibility with osu-stable as much as possible, explicit segments with the same type are converted to use implicit segments by duplicating the control point.
bool needsExplicitSegment = point.Type.Value != lastType; // One exception are consecutive perfect curves, which aren't supported in osu-stable
bool needsExplicitSegment = point.Type.Value != lastType || point.Type.Value == PathType.PerfectCurve;
// One exception to this is when the last two control points of the last segment were duplicated. This is not a scenario supported by osu!stable. // Another exception to this is when the last two control points of the last segment were duplicated. This is not a scenario supported by osu!stable.
// Lazer does not add implicit segments for the last two control points of _any_ explicit segment, so an explicit segment is forced in order to maintain consistency with the decoder. // Lazer does not add implicit segments for the last two control points of _any_ explicit segment, so an explicit segment is forced in order to maintain consistency with the decoder.
if (i > 1) if (i > 1)
{ {