mirror of
https://github.com/ppy/osu.git
synced 2025-02-13 22:35:23 +08:00
Added definitelyBigger
This commit is contained in:
parent
58f80abe32
commit
34be437d7a
@ -204,7 +204,7 @@ namespace osu.Game.Rulesets.Osu.Mods
|
|||||||
|
|
||||||
var beats = beatmap.ControlPointInfo.TimingPoints
|
var beats = beatmap.ControlPointInfo.TimingPoints
|
||||||
// Ignore timing points after endTime
|
// Ignore timing points after endTime
|
||||||
.Where(timingPoint => almostBigger(endTime, timingPoint.Time))
|
.Where(timingPoint => !definitelyBigger(timingPoint.Time, endTime))
|
||||||
// Generate the beats
|
// Generate the beats
|
||||||
.SelectMany(timingPoint => getBeatsForTimingPoint(timingPoint, endTime))
|
.SelectMany(timingPoint => getBeatsForTimingPoint(timingPoint, endTime))
|
||||||
// Remove beats before startTime
|
// Remove beats before startTime
|
||||||
@ -218,7 +218,7 @@ namespace osu.Game.Rulesets.Osu.Mods
|
|||||||
{
|
{
|
||||||
var beat = beats[i];
|
var beat = beats[i];
|
||||||
|
|
||||||
if (almostBigger(beatmap.ControlPointInfo.TimingPointAt(beat).BeatLength / 2, beats[i + 1] - beat))
|
if (!definitelyBigger(beats[i + 1] - beat, beatmap.ControlPointInfo.TimingPointAt(beat).BeatLength / 2))
|
||||||
beats.RemoveAt(i);
|
beats.RemoveAt(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -386,7 +386,7 @@ namespace osu.Game.Rulesets.Osu.Mods
|
|||||||
var firstObjAfterBreak = originalHitObjects.First(obj => almostBigger(obj.StartTime, breakPeriod.EndTime));
|
var firstObjAfterBreak = originalHitObjects.First(obj => almostBigger(obj.StartTime, breakPeriod.EndTime));
|
||||||
|
|
||||||
return almostBigger(time, breakPeriod.StartTime)
|
return almostBigger(time, breakPeriod.StartTime)
|
||||||
&& almostBigger(firstObjAfterBreak.StartTime, time);
|
&& definitelyBigger(firstObjAfterBreak.StartTime, time);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -396,7 +396,7 @@ namespace osu.Game.Rulesets.Osu.Mods
|
|||||||
int i = 0;
|
int i = 0;
|
||||||
var currentTime = timingPoint.Time;
|
var currentTime = timingPoint.Time;
|
||||||
|
|
||||||
while (almostBigger(mapEndTime, currentTime) && controlPointInfo.TimingPointAt(currentTime) == timingPoint)
|
while (!definitelyBigger(currentTime, mapEndTime) && controlPointInfo.TimingPointAt(currentTime) == timingPoint)
|
||||||
{
|
{
|
||||||
beats.Add(Math.Floor(currentTime));
|
beats.Add(Math.Floor(currentTime));
|
||||||
i++;
|
i++;
|
||||||
@ -439,6 +439,8 @@ namespace osu.Game.Rulesets.Osu.Mods
|
|||||||
|
|
||||||
if (!(hitObject is IHasRepeats s))
|
if (!(hitObject is IHasRepeats s))
|
||||||
return false;
|
return false;
|
||||||
|
// If time is outside the duration of the IHasRepeats,
|
||||||
|
// then this hitObject isn't the one we want
|
||||||
if (!almostBigger(time, hitObject.StartTime)
|
if (!almostBigger(time, hitObject.StartTime)
|
||||||
|| !almostBigger(s.EndTime, time))
|
|| !almostBigger(s.EndTime, time))
|
||||||
return false;
|
return false;
|
||||||
@ -520,6 +522,11 @@ namespace osu.Game.Rulesets.Osu.Mods
|
|||||||
return Precision.AlmostBigger(value1, value2, timing_precision);
|
return Precision.AlmostBigger(value1, value2, timing_precision);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static bool definitelyBigger(double value1, double value2)
|
||||||
|
{
|
||||||
|
return Precision.DefinitelyBigger(value1, value2, timing_precision);
|
||||||
|
}
|
||||||
|
|
||||||
private static bool almostEquals(double value1, double value2)
|
private static bool almostEquals(double value1, double value2)
|
||||||
{
|
{
|
||||||
return Precision.AlmostEquals(value1, value2, timing_precision);
|
return Precision.AlmostEquals(value1, value2, timing_precision);
|
||||||
|
Loading…
Reference in New Issue
Block a user