diff --git a/osu.Game/Beatmaps/BeatmapManager.cs b/osu.Game/Beatmaps/BeatmapManager.cs
index b4ea898b7d..69b513d256 100644
--- a/osu.Game/Beatmaps/BeatmapManager.cs
+++ b/osu.Game/Beatmaps/BeatmapManager.cs
@@ -281,8 +281,9 @@ namespace osu.Game.Beatmaps
///
/// The beatmap to lookup.
/// The currently loaded . Allows for optimisation where elements are shared with the new beatmap. May be returned if beatmapInfo requested matches
+ /// Whether to bypass the cache and return a new instance.
/// A instance correlating to the provided .
- public WorkingBeatmap GetWorkingBeatmap(BeatmapInfo beatmapInfo, WorkingBeatmap previous = null)
+ public WorkingBeatmap GetWorkingBeatmap(BeatmapInfo beatmapInfo, WorkingBeatmap previous = null, bool bypassCache = false)
{
if (beatmapInfo?.ID > 0 && previous != null && previous.BeatmapInfo?.ID == beatmapInfo.ID)
return previous;
@@ -301,9 +302,14 @@ namespace osu.Game.Beatmaps
lock (workingCache)
{
- var working = workingCache.FirstOrDefault(w => w.BeatmapInfo?.ID == beatmapInfo.ID);
- if (working != null)
- return working;
+ BeatmapManagerWorkingBeatmap working;
+
+ if (!bypassCache)
+ {
+ working = workingCache.FirstOrDefault(w => w.BeatmapInfo?.ID == beatmapInfo.ID);
+ if (working != null)
+ return working;
+ }
beatmapInfo.Metadata ??= beatmapInfo.BeatmapSet.Metadata;