diff --git a/osu-framework b/osu-framework index 90bf49a2df..d89e6cd631 160000 --- a/osu-framework +++ b/osu-framework @@ -1 +1 @@ -Subproject commit 90bf49a2df3dbad5994d922df63e4891c622dbc3 +Subproject commit d89e6cd63140c2b73631b79ff83b130a2b9958ed diff --git a/osu.Game/Rulesets/Replays/FramedReplayInputHandler.cs b/osu.Game/Rulesets/Replays/FramedReplayInputHandler.cs index 913214abfb..c245407bbf 100644 --- a/osu.Game/Rulesets/Replays/FramedReplayInputHandler.cs +++ b/osu.Game/Rulesets/Replays/FramedReplayInputHandler.cs @@ -102,8 +102,14 @@ namespace osu.Game.Rulesets.Replays if (hasFrames) { - //if we changed frames, we want to execute once *exactly* on the frame's time. - if (currentDirection == time.CompareTo(NextFrame.Time) && advanceFrame()) + // check if the next frame is in the "future" for the current playback direction + if (currentDirection != time.CompareTo(NextFrame.Time)) + { + // if we didn't change frames, we need to ensure we are allowed to run frames in between, else return null. + if (inImportantSection) + return null; + } + else if (advanceFrame()) { // If going backwards, we need to execute once _before_ the frame time to reverse any judgements // that would occur as a result of this frame in forward playback @@ -111,10 +117,6 @@ namespace osu.Game.Rulesets.Replays return currentTime = CurrentFrame.Time - 1; return currentTime = CurrentFrame.Time; } - - //if we didn't change frames, we need to ensure we are allowed to run frames in between, else return null. - if (inImportantSection) - return null; } return currentTime = time; diff --git a/osu.Game/Rulesets/UI/RulesetInputManager.cs b/osu.Game/Rulesets/UI/RulesetInputManager.cs index 037f9136a8..6a978a3eb3 100644 --- a/osu.Game/Rulesets/UI/RulesetInputManager.cs +++ b/osu.Game/Rulesets/UI/RulesetInputManager.cs @@ -140,6 +140,8 @@ namespace osu.Game.Rulesets.UI if (!base.UpdateSubTree()) return false; + UpdateSubTreeMasking(ScreenSpaceDrawQuad.AABBFloat); + if (isAttached) { // When handling replay input, we need to consider the possibility of fast-forwarding, which may cause the clock to be updated