diff --git a/osu.Game/Rulesets/Mods/IUpdatableByPlayfield.cs b/osu.Game/Rulesets/Mods/IUpdatableByPlayfield.cs
index 9baa252caf..7cf480a11b 100644
--- a/osu.Game/Rulesets/Mods/IUpdatableByPlayfield.cs
+++ b/osu.Game/Rulesets/Mods/IUpdatableByPlayfield.cs
@@ -5,8 +5,19 @@ using osu.Game.Rulesets.UI;
namespace osu.Game.Rulesets.Mods
{
+ ///
+ /// An interface for s that are updated every frame by a .
+ ///
public interface IUpdatableByPlayfield : IApplicableMod
{
+ ///
+ /// Update this .
+ ///
+ /// The main
+ ///
+ /// This method is called once per frame during gameplay by the main only.
+ /// To access nested s, use .
+ ///
void Update(Playfield playfield);
}
}
diff --git a/osu.Game/Rulesets/UI/Playfield.cs b/osu.Game/Rulesets/UI/Playfield.cs
index d0bbf859af..30e71dde1c 100644
--- a/osu.Game/Rulesets/UI/Playfield.cs
+++ b/osu.Game/Rulesets/UI/Playfield.cs
@@ -79,6 +79,11 @@ namespace osu.Game.Rulesets.UI
private readonly List nestedPlayfields = new List();
+ ///
+ /// Whether this is nested in another .
+ ///
+ public bool IsNested { get; private set; }
+
///
/// Whether judgements should be displayed by this and and all nested s.
///
@@ -206,6 +211,8 @@ namespace osu.Game.Rulesets.UI
/// The to add.
protected void AddNested(Playfield otherPlayfield)
{
+ otherPlayfield.IsNested = true;
+
otherPlayfield.DisplayJudgements.BindTo(DisplayJudgements);
otherPlayfield.NewResult += (d, r) => NewResult?.Invoke(d, r);
@@ -229,7 +236,7 @@ namespace osu.Game.Rulesets.UI
{
base.Update();
- if (mods != null)
+ if (!IsNested && mods != null)
{
foreach (var mod in mods)
{