mirror of
https://github.com/ppy/osu.git
synced 2025-03-23 16:27:20 +08:00
Merge pull request #31306 from bdach/aspire-slider-breakage
Fix slider event generator incorrectly not generating repeats when tick distance is zero
This commit is contained in:
commit
77d9c955ea
@ -112,5 +112,20 @@ namespace osu.Game.Tests.Beatmaps
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestRepeatsGeneratedEvenForZeroLengthSlider()
|
||||
{
|
||||
var events = SliderEventGenerator.Generate(start_time, span_duration, 1, span_duration / 2, 0, 2).ToArray();
|
||||
|
||||
Assert.That(events[0].Type, Is.EqualTo(SliderEventType.Head));
|
||||
Assert.That(events[0].Time, Is.EqualTo(start_time));
|
||||
|
||||
Assert.That(events[1].Type, Is.EqualTo(SliderEventType.Repeat));
|
||||
Assert.That(events[1].Time, Is.EqualTo(span_duration));
|
||||
|
||||
Assert.That(events[3].Type, Is.EqualTo(SliderEventType.Tail));
|
||||
Assert.That(events[3].Time, Is.EqualTo(span_duration * 2));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -44,13 +44,13 @@ namespace osu.Game.Rulesets.Objects
|
||||
PathProgress = 0,
|
||||
};
|
||||
|
||||
if (tickDistance != 0)
|
||||
for (int span = 0; span < spanCount; span++)
|
||||
{
|
||||
for (int span = 0; span < spanCount; span++)
|
||||
{
|
||||
double spanStartTime = startTime + span * spanDuration;
|
||||
bool reversed = span % 2 == 1;
|
||||
double spanStartTime = startTime + span * spanDuration;
|
||||
bool reversed = span % 2 == 1;
|
||||
|
||||
if (tickDistance != 0)
|
||||
{
|
||||
var ticks = generateTicks(span, spanStartTime, spanDuration, reversed, length, tickDistance, minDistanceFromEnd, cancellationToken);
|
||||
|
||||
if (reversed)
|
||||
@ -61,18 +61,18 @@ namespace osu.Game.Rulesets.Objects
|
||||
|
||||
foreach (var e in ticks)
|
||||
yield return e;
|
||||
}
|
||||
|
||||
if (span < spanCount - 1)
|
||||
if (span < spanCount - 1)
|
||||
{
|
||||
yield return new SliderEventDescriptor
|
||||
{
|
||||
yield return new SliderEventDescriptor
|
||||
{
|
||||
Type = SliderEventType.Repeat,
|
||||
SpanIndex = span,
|
||||
SpanStartTime = startTime + span * spanDuration,
|
||||
Time = spanStartTime + spanDuration,
|
||||
PathProgress = (span + 1) % 2,
|
||||
};
|
||||
}
|
||||
Type = SliderEventType.Repeat,
|
||||
SpanIndex = span,
|
||||
SpanStartTime = startTime + span * spanDuration,
|
||||
Time = spanStartTime + spanDuration,
|
||||
PathProgress = (span + 1) % 2,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user