mirror of
https://github.com/osukey/osukey.git
synced 2025-05-30 01:47:30 +09:00
Refactor IsHitObjectOnBeat
to be understandable
This commit is contained in:
parent
a2f96ea120
commit
31cd7cdca0
@ -195,19 +195,17 @@ namespace osu.Game.Rulesets.Osu.Utils
|
|||||||
/// <returns>true if hitObject is on a (down-)beat, false otherwise.</returns>
|
/// <returns>true if hitObject is on a (down-)beat, false otherwise.</returns>
|
||||||
public static bool IsHitObjectOnBeat(OsuBeatmap beatmap, OsuHitObject hitObject, bool downbeatsOnly = false)
|
public static bool IsHitObjectOnBeat(OsuBeatmap beatmap, OsuHitObject hitObject, bool downbeatsOnly = false)
|
||||||
{
|
{
|
||||||
var timingPoints = beatmap.ControlPointInfo.TimingPoints;
|
var timingPoint = beatmap.ControlPointInfo.TimingPointAt(hitObject.StartTime);
|
||||||
var currentTimingPoint = timingPoints.LastOrDefault(p => p.Time <= hitObject.StartTime);
|
|
||||||
|
|
||||||
if (currentTimingPoint == null)
|
double timeSinceTimingPoint = hitObject.StartTime - timingPoint.Time;
|
||||||
return false;
|
|
||||||
|
|
||||||
double timeSinceTimingPoint = hitObject.StartTime - currentTimingPoint.Time;
|
double beatLength = timingPoint.BeatLength;
|
||||||
|
|
||||||
double length = downbeatsOnly
|
if (downbeatsOnly)
|
||||||
? currentTimingPoint.BeatLength * currentTimingPoint.TimeSignature.Numerator
|
beatLength *= timingPoint.TimeSignature.Numerator;
|
||||||
: currentTimingPoint.BeatLength;
|
|
||||||
|
|
||||||
return (timeSinceTimingPoint + 1) % length < 2;
|
// Ensure within 1ms of expected location.
|
||||||
|
return Math.Abs(timeSinceTimingPoint + 1) % beatLength < 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user