diff --git a/osu.Game/Configuration/OsuConfigManager.cs b/osu.Game/Configuration/OsuConfigManager.cs
index f642d23bb0..af6fd61a3d 100644
--- a/osu.Game/Configuration/OsuConfigManager.cs
+++ b/osu.Game/Configuration/OsuConfigManager.cs
@@ -196,6 +196,7 @@ namespace osu.Game.Configuration
SetDefault(OsuSetting.EditorShowSpeedChanges, false);
SetDefault(OsuSetting.EditorScaleOrigin, EditorOrigin.GridCentre);
SetDefault(OsuSetting.EditorRotationOrigin, EditorOrigin.GridCentre);
+ SetDefault(OsuSetting.EditorAdjustExistingObjectsOnTimingChanges, true);
SetDefault(OsuSetting.HideCountryFlags, false);
@@ -442,5 +443,6 @@ namespace osu.Game.Configuration
EditorScaleOrigin,
EditorRotationOrigin,
EditorTimelineShowBreaks,
+ EditorAdjustExistingObjectsOnTimingChanges,
}
}
diff --git a/osu.Game/Localisation/EditorStrings.cs b/osu.Game/Localisation/EditorStrings.cs
index 19b783de92..127bdd8355 100644
--- a/osu.Game/Localisation/EditorStrings.cs
+++ b/osu.Game/Localisation/EditorStrings.cs
@@ -40,9 +40,9 @@ namespace osu.Game.Localisation
public static LocalisableString SetPreviewPointToCurrent => new TranslatableString(getKey(@"set_preview_point_to_current"), @"Set preview point to current time");
///
- /// "Move already placed notes when changing the offset / BPM"
+ /// "Move already placed objects when changing timing"
///
- public static LocalisableString AdjustNotesOnOffsetBPMChange => new TranslatableString(getKey(@"adjust_notes_on_offset_bpm_change"), @"Move already placed notes when changing the offset / BPM");
+ public static LocalisableString AdjustExistingObjectsOnTimingChanges => new TranslatableString(getKey(@"adjust_existing_objects_on_timing_changes"), @"Move already placed objects when changing timing");
///
/// "For editing (.olz)"
diff --git a/osu.Game/Screens/Edit/Editor.cs b/osu.Game/Screens/Edit/Editor.cs
index 178b3f57b0..8de0c7c33d 100644
--- a/osu.Game/Screens/Edit/Editor.cs
+++ b/osu.Game/Screens/Edit/Editor.cs
@@ -422,9 +422,9 @@ namespace osu.Game.Screens.Edit
Items = new MenuItem[]
{
new EditorMenuItem(EditorStrings.SetPreviewPointToCurrent, MenuItemType.Standard, SetPreviewPointToCurrentTime),
- new ToggleMenuItem(EditorStrings.AdjustNotesOnOffsetBPMChange)
+ new ToggleMenuItem(EditorStrings.AdjustExistingObjectsOnTimingChanges)
{
- State = { BindTarget = editorBeatmap.AdjustNotesOnOffsetBPMChange },
+ State = { BindTarget = config.GetBindable(OsuSetting.EditorAdjustExistingObjectsOnTimingChanges) },
}
}
}
diff --git a/osu.Game/Screens/Edit/EditorBeatmap.cs b/osu.Game/Screens/Edit/EditorBeatmap.cs
index 154ebf3c88..ad31c2ccc3 100644
--- a/osu.Game/Screens/Edit/EditorBeatmap.cs
+++ b/osu.Game/Screens/Edit/EditorBeatmap.cs
@@ -89,8 +89,6 @@ namespace osu.Game.Screens.Edit
public BindableInt PreviewTime { get; }
- public Bindable AdjustNotesOnOffsetBPMChange { get; } = new Bindable(false);
-
private readonly IBeatmapProcessor beatmapProcessor;
private readonly Dictionary> startTimeBindables = new Dictionary>();
diff --git a/osu.Game/Screens/Edit/Timing/GroupSection.cs b/osu.Game/Screens/Edit/Timing/GroupSection.cs
index abcdf7e4ff..13e802a8e4 100644
--- a/osu.Game/Screens/Edit/Timing/GroupSection.cs
+++ b/osu.Game/Screens/Edit/Timing/GroupSection.cs
@@ -7,6 +7,7 @@ using osu.Framework.Bindables;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Game.Beatmaps.ControlPoints;
+using osu.Game.Configuration;
using osu.Game.Graphics.UserInterface;
using osu.Game.Graphics.UserInterfaceV2;
using osuTK;
@@ -25,6 +26,9 @@ namespace osu.Game.Screens.Edit.Timing
[Resolved]
protected EditorBeatmap Beatmap { get; private set; } = null!;
+ [Resolved]
+ private OsuConfigManager configManager { get; set; } = null!;
+
[Resolved]
private EditorClock clock { get; set; } = null!;
@@ -112,7 +116,7 @@ namespace osu.Game.Screens.Edit.Timing
foreach (var cp in currentGroupItems)
{
// Only adjust hit object offsets if the group contains a timing control point
- if (Beatmap.AdjustNotesOnOffsetBPMChange.Value && cp is TimingControlPoint tp)
+ if (cp is TimingControlPoint tp && configManager.Get(OsuSetting.EditorAdjustExistingObjectsOnTimingChanges))
{
TimingSectionAdjustments.AdjustHitObjectOffset(Beatmap, tp, time - SelectedGroup.Value.Time);
Beatmap.UpdateAllHitObjects();
diff --git a/osu.Game/Screens/Edit/Timing/TapTimingControl.cs b/osu.Game/Screens/Edit/Timing/TapTimingControl.cs
index 91a0a43d62..f105c00726 100644
--- a/osu.Game/Screens/Edit/Timing/TapTimingControl.cs
+++ b/osu.Game/Screens/Edit/Timing/TapTimingControl.cs
@@ -10,6 +10,7 @@ using osu.Framework.Graphics.Shapes;
using osu.Framework.Graphics.Sprites;
using osu.Framework.Input.Events;
using osu.Game.Beatmaps.ControlPoints;
+using osu.Game.Configuration;
using osu.Game.Graphics;
using osu.Game.Graphics.UserInterface;
using osu.Game.Graphics.UserInterfaceV2;
@@ -26,6 +27,9 @@ namespace osu.Game.Screens.Edit.Timing
[Resolved]
private EditorBeatmap beatmap { get; set; } = null!;
+ [Resolved]
+ private OsuConfigManager configManager { get; set; } = null!;
+
[Resolved]
private Bindable selectedGroup { get; set; } = null!;
@@ -209,7 +213,7 @@ namespace osu.Game.Screens.Edit.Timing
foreach (var cp in currentGroupItems)
{
- if (beatmap.AdjustNotesOnOffsetBPMChange.Value && cp is TimingControlPoint tp)
+ if (cp is TimingControlPoint tp)
{
TimingSectionAdjustments.AdjustHitObjectOffset(beatmap, tp, adjust);
beatmap.UpdateAllHitObjects();
@@ -236,7 +240,7 @@ namespace osu.Game.Screens.Edit.Timing
double oldBeatLength = timing.BeatLength;
timing.BeatLength = 60000 / (timing.BPM + adjust);
- if (beatmap.AdjustNotesOnOffsetBPMChange.Value)
+ if (configManager.Get(OsuSetting.EditorAdjustExistingObjectsOnTimingChanges))
{
beatmap.BeginChange();
TimingSectionAdjustments.SetHitObjectBPM(beatmap, timing, oldBeatLength);
diff --git a/osu.Game/Screens/Edit/Timing/TimingSection.cs b/osu.Game/Screens/Edit/Timing/TimingSection.cs
index e668120d0d..6a89dc1341 100644
--- a/osu.Game/Screens/Edit/Timing/TimingSection.cs
+++ b/osu.Game/Screens/Edit/Timing/TimingSection.cs
@@ -6,6 +6,7 @@ using osu.Framework.Allocation;
using osu.Framework.Bindables;
using osu.Framework.Graphics;
using osu.Game.Beatmaps.ControlPoints;
+using osu.Game.Configuration;
using osu.Game.Graphics.UserInterfaceV2;
namespace osu.Game.Screens.Edit.Timing
@@ -16,6 +17,9 @@ namespace osu.Game.Screens.Edit.Timing
private LabelledSwitchButton omitBarLine = null!;
private BPMTextBox bpmTextEntry = null!;
+ [Resolved]
+ private OsuConfigManager configManager { get; set; } = null!;
+
[BackgroundDependencyLoader]
private void load()
{
@@ -46,7 +50,7 @@ namespace osu.Game.Screens.Edit.Timing
bpmTextEntry.OnCommit = (oldBeatLength, _) =>
{
- if (!Beatmap.AdjustNotesOnOffsetBPMChange.Value || ControlPoint.Value == null)
+ if (!configManager.Get(OsuSetting.EditorAdjustExistingObjectsOnTimingChanges) || ControlPoint.Value == null)
return;
Beatmap.BeginChange();