diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointConnectionPiece.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointConnectionPiece.cs
index 67685d21a7..004a091cae 100644
--- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointConnectionPiece.cs
+++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointConnectionPiece.cs
@@ -51,14 +51,26 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components
base.LoadComplete();
hitObjectPosition = hitObject.PositionBindable.GetBoundCopy();
- hitObjectPosition.BindValueChanged(_ => updateConnectingPath());
+ hitObjectPosition.BindValueChanged(_ => pathRequiresUpdate = true);
pathVersion = hitObject.Path.Version.GetBoundCopy();
- pathVersion.BindValueChanged(_ => updateConnectingPath());
+ pathVersion.BindValueChanged(_ => pathRequiresUpdate = true);
updateConnectingPath();
}
+ private bool pathRequiresUpdate;
+
+ protected override void Update()
+ {
+ base.Update();
+
+ if (!pathRequiresUpdate) return;
+
+ updateConnectingPath();
+ pathRequiresUpdate = false;
+ }
+
///
/// Updates the path connecting this control point to the next one.
///
diff --git a/osu.Game.Rulesets.Osu/Skinning/Default/PlaySliderBody.cs b/osu.Game.Rulesets.Osu/Skinning/Default/PlaySliderBody.cs
index aa507cbaf0..cbc62a1c7c 100644
--- a/osu.Game.Rulesets.Osu/Skinning/Default/PlaySliderBody.cs
+++ b/osu.Game.Rulesets.Osu/Skinning/Default/PlaySliderBody.cs
@@ -18,8 +18,6 @@ namespace osu.Game.Rulesets.Osu.Skinning.Default
protected IBindable AccentColourBindable { get; private set; } = null!;
- private IBindable pathVersion = null!;
-
[Resolved(CanBeNull = true)]
private OsuRulesetConfigManager? config { get; set; }
@@ -33,8 +31,8 @@ namespace osu.Game.Rulesets.Osu.Skinning.Default
ScaleBindable = drawableSlider.ScaleBindable.GetBoundCopy();
ScaleBindable.BindValueChanged(scale => PathRadius = OsuHitObject.OBJECT_RADIUS * scale.NewValue, true);
- pathVersion = drawableSlider.PathVersion.GetBoundCopy();
- pathVersion.BindValueChanged(_ => Refresh());
+ drawableObject.DefaultsApplied += _ => Refresh();
+ drawableObject.HitObjectApplied += _ => Refresh();
AccentColourBindable = drawableObject.AccentColour.GetBoundCopy();
AccentColourBindable.BindValueChanged(accent => AccentColour = GetBodyAccentColour(skin, accent.NewValue), true);