mirror of
https://github.com/ppy/osu.git
synced 2025-01-28 11:02:54 +08:00
Avoid changing frame stable clock direction if time hasn't changed between frames
This commit is contained in:
parent
b1ad3161dd
commit
56eae703fe
@ -55,7 +55,10 @@ namespace osu.Game.Rulesets.UI
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// The current direction of playback to be exposed to frame stable children.
|
/// The current direction of playback to be exposed to frame stable children.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private int direction;
|
/// <remarks>
|
||||||
|
/// Initially it is presumed that playback will proceed in the forward direction.
|
||||||
|
/// </remarks>
|
||||||
|
private int direction = 1;
|
||||||
|
|
||||||
[BackgroundDependencyLoader(true)]
|
[BackgroundDependencyLoader(true)]
|
||||||
private void load(GameplayClock clock, ISamplePlaybackDisabler sampleDisabler)
|
private void load(GameplayClock clock, ISamplePlaybackDisabler sampleDisabler)
|
||||||
@ -139,7 +142,9 @@ namespace osu.Game.Rulesets.UI
|
|||||||
state = PlaybackState.NotValid;
|
state = PlaybackState.NotValid;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state == PlaybackState.Valid)
|
// if the proposed time is the same as the current time, assume that the clock will continue progressing in the same direction as previously.
|
||||||
|
// this avoids spurious flips in direction from -1 to 1 during rewinds.
|
||||||
|
if (state == PlaybackState.Valid && proposedTime != manualClock.CurrentTime)
|
||||||
direction = proposedTime >= manualClock.CurrentTime ? 1 : -1;
|
direction = proposedTime >= manualClock.CurrentTime ? 1 : -1;
|
||||||
|
|
||||||
double timeBehind = Math.Abs(proposedTime - parentGameplayClock.CurrentTime);
|
double timeBehind = Math.Abs(proposedTime - parentGameplayClock.CurrentTime);
|
||||||
|
Loading…
Reference in New Issue
Block a user