mirror of
https://github.com/ppy/osu.git
synced 2025-01-12 21:52:55 +08:00
Fix osu!taiko drum rolls not getting correct tick rate after placement in the editor
This commit is contained in:
parent
b096e03a57
commit
3db080fad2
@ -133,7 +133,6 @@ namespace osu.Game.Rulesets.Taiko.Beatmaps
|
||||
StartTime = obj.StartTime,
|
||||
Samples = obj.Samples,
|
||||
Duration = taikoDuration,
|
||||
TickRate = beatmap.Difficulty.SliderTickRate == 3 ? 3 : 4,
|
||||
SliderVelocity = obj is IHasSliderVelocity velocityData ? velocityData.SliderVelocity : 1
|
||||
};
|
||||
}
|
||||
|
@ -4,7 +4,6 @@
|
||||
using osu.Game.Rulesets.Objects.Types;
|
||||
using System.Threading;
|
||||
using osu.Framework.Bindables;
|
||||
using osu.Framework.Utils;
|
||||
using osu.Game.Beatmaps;
|
||||
using osu.Game.Beatmaps.ControlPoints;
|
||||
using osu.Game.Beatmaps.Formats;
|
||||
@ -68,6 +67,8 @@ namespace osu.Game.Rulesets.Taiko.Objects
|
||||
double scoringDistance = base_distance * difficulty.SliderMultiplier * SliderVelocity;
|
||||
Velocity = scoringDistance / timingPoint.BeatLength;
|
||||
|
||||
TickRate = difficulty.SliderTickRate == 3 ? 3 : 4;
|
||||
|
||||
tickSpacing = timingPoint.BeatLength / TickRate;
|
||||
}
|
||||
|
||||
@ -85,10 +86,7 @@ namespace osu.Game.Rulesets.Taiko.Objects
|
||||
|
||||
bool first = true;
|
||||
|
||||
// TODO: this implementation of drum roll tick does not match stable.
|
||||
// Stable uses next-object intrinsics to decide whether the end of a drum roll gets a tick.
|
||||
// It also changes the rate of ticks based on BPM. This is quite important.
|
||||
for (double t = StartTime; Precision.AlmostBigger(EndTime, t, 1); t += tickSpacing)
|
||||
for (double t = StartTime; t < EndTime + tickSpacing; t += tickSpacing)
|
||||
{
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user