diff --git a/osu.Game.Tests/Beatmaps/Formats/LegacyBeatmapDecoderTest.cs b/osu.Game.Tests/Beatmaps/Formats/LegacyBeatmapDecoderTest.cs
index 24410c886f..8560a36fb4 100644
--- a/osu.Game.Tests/Beatmaps/Formats/LegacyBeatmapDecoderTest.cs
+++ b/osu.Game.Tests/Beatmaps/Formats/LegacyBeatmapDecoderTest.cs
@@ -3,16 +3,12 @@
using System;
using System.IO;
-using NUnit.Framework;
-using osuTK;
-using osuTK.Graphics;
-using osu.Game.Tests.Resources;
using System.Linq;
+using NUnit.Framework;
using osu.Game.Audio;
using osu.Game.Beatmaps;
-using osu.Game.Beatmaps.ControlPoints;
-using osu.Game.Rulesets.Objects.Types;
using osu.Game.Beatmaps.Formats;
+using osu.Game.Beatmaps.Legacy;
using osu.Game.Beatmaps.Timing;
using osu.Game.IO;
using osu.Game.Rulesets.Catch;
@@ -20,9 +16,13 @@ using osu.Game.Rulesets.Catch.Beatmaps;
using osu.Game.Rulesets.Mods;
using osu.Game.Rulesets.Objects;
using osu.Game.Rulesets.Objects.Legacy;
+using osu.Game.Rulesets.Objects.Types;
using osu.Game.Rulesets.Osu;
using osu.Game.Rulesets.Osu.Beatmaps;
using osu.Game.Skinning;
+using osu.Game.Tests.Resources;
+using osuTK;
+using osuTK.Graphics;
namespace osu.Game.Tests.Beatmaps.Formats
{
diff --git a/osu.Game.Tests/NonVisual/ControlPointInfoTest.cs b/osu.Game.Tests/NonVisual/ControlPointInfoTest.cs
index e1d6df814e..fabb016d5f 100644
--- a/osu.Game.Tests/NonVisual/ControlPointInfoTest.cs
+++ b/osu.Game.Tests/NonVisual/ControlPointInfoTest.cs
@@ -4,6 +4,7 @@
using System.Linq;
using NUnit.Framework;
using osu.Game.Beatmaps.ControlPoints;
+using osu.Game.Beatmaps.Legacy;
namespace osu.Game.Tests.NonVisual
{
diff --git a/osu.Game/Beatmaps/ControlPoints/ControlPointInfo.cs b/osu.Game/Beatmaps/ControlPoints/ControlPointInfo.cs
index 7cc4fa6dc4..d2a3b2fc8b 100644
--- a/osu.Game/Beatmaps/ControlPoints/ControlPointInfo.cs
+++ b/osu.Game/Beatmaps/ControlPoints/ControlPointInfo.cs
@@ -14,64 +14,6 @@ using osu.Game.Utils;
namespace osu.Game.Beatmaps.ControlPoints
{
- public class LegacyControlPointInfo : ControlPointInfo
- {
- ///
- /// All sound points.
- ///
- [JsonProperty]
- public IBindableList SamplePoints => samplePoints;
-
- private readonly BindableList samplePoints = new BindableList();
-
- ///
- /// Finds the sound control point that is active at .
- ///
- /// The time to find the sound control point at.
- /// The sound control point.
- [NotNull]
- public SampleControlPoint SamplePointAt(double time) => BinarySearchWithFallback(SamplePoints, time, SamplePoints.Count > 0 ? SamplePoints[0] : SampleControlPoint.DEFAULT);
-
- public override void Clear()
- {
- base.Clear();
- samplePoints.Clear();
- }
-
- protected override bool CheckAlreadyExisting(double time, ControlPoint newPoint)
- {
- if (newPoint is SampleControlPoint _)
- {
- var existing = BinarySearch(SamplePoints, time);
- return newPoint?.IsRedundant(existing) == true;
- }
-
- return base.CheckAlreadyExisting(time, newPoint);
- }
-
- protected override void GroupItemAdded(ControlPoint controlPoint)
- {
- if (controlPoint is SampleControlPoint typed)
- {
- samplePoints.Add(typed);
- return;
- }
-
- base.GroupItemAdded(controlPoint);
- }
-
- protected override void GroupItemRemoved(ControlPoint controlPoint)
- {
- if (controlPoint is SampleControlPoint typed)
- {
- samplePoints.Remove(typed);
- return;
- }
-
- base.GroupItemRemoved(controlPoint);
- }
- }
-
[Serializable]
public class ControlPointInfo : IDeepCloneable
{
diff --git a/osu.Game/Beatmaps/Legacy/LegacyControlPointInfo.cs b/osu.Game/Beatmaps/Legacy/LegacyControlPointInfo.cs
new file mode 100644
index 0000000000..db9ff27f73
--- /dev/null
+++ b/osu.Game/Beatmaps/Legacy/LegacyControlPointInfo.cs
@@ -0,0 +1,68 @@
+// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence.
+// See the LICENCE file in the repository root for full licence text.
+
+using JetBrains.Annotations;
+using Newtonsoft.Json;
+using osu.Framework.Bindables;
+using osu.Game.Beatmaps.ControlPoints;
+
+namespace osu.Game.Beatmaps.Legacy
+{
+ public class LegacyControlPointInfo : ControlPointInfo
+ {
+ ///
+ /// All sound points.
+ ///
+ [JsonProperty]
+ public IBindableList SamplePoints => samplePoints;
+
+ private readonly BindableList samplePoints = new BindableList();
+
+ ///
+ /// Finds the sound control point that is active at .
+ ///
+ /// The time to find the sound control point at.
+ /// The sound control point.
+ [NotNull]
+ public SampleControlPoint SamplePointAt(double time) => BinarySearchWithFallback(SamplePoints, time, SamplePoints.Count > 0 ? SamplePoints[0] : SampleControlPoint.DEFAULT);
+
+ public override void Clear()
+ {
+ base.Clear();
+ samplePoints.Clear();
+ }
+
+ protected override bool CheckAlreadyExisting(double time, ControlPoint newPoint)
+ {
+ if (newPoint is SampleControlPoint _)
+ {
+ var existing = BinarySearch(SamplePoints, time);
+ return newPoint?.IsRedundant(existing) == true;
+ }
+
+ return base.CheckAlreadyExisting(time, newPoint);
+ }
+
+ protected override void GroupItemAdded(ControlPoint controlPoint)
+ {
+ if (controlPoint is SampleControlPoint typed)
+ {
+ samplePoints.Add(typed);
+ return;
+ }
+
+ base.GroupItemAdded(controlPoint);
+ }
+
+ protected override void GroupItemRemoved(ControlPoint controlPoint)
+ {
+ if (controlPoint is SampleControlPoint typed)
+ {
+ samplePoints.Remove(typed);
+ return;
+ }
+
+ base.GroupItemRemoved(controlPoint);
+ }
+ }
+}
diff --git a/osu.Game/Rulesets/Objects/HitObject.cs b/osu.Game/Rulesets/Objects/HitObject.cs
index fd9f02604c..3e95659243 100644
--- a/osu.Game/Rulesets/Objects/HitObject.cs
+++ b/osu.Game/Rulesets/Objects/HitObject.cs
@@ -11,6 +11,7 @@ using osu.Framework.Bindables;
using osu.Game.Audio;
using osu.Game.Beatmaps;
using osu.Game.Beatmaps.ControlPoints;
+using osu.Game.Beatmaps.Legacy;
using osu.Game.Rulesets.Judgements;
using osu.Game.Rulesets.Objects.Types;
using osu.Game.Rulesets.Scoring;
diff --git a/osu.Game/Screens/Edit/Timing/SampleSection.cs b/osu.Game/Screens/Edit/Timing/SampleSection.cs
index be8de18502..52709a2bbe 100644
--- a/osu.Game/Screens/Edit/Timing/SampleSection.cs
+++ b/osu.Game/Screens/Edit/Timing/SampleSection.cs
@@ -1,7 +1,6 @@
// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
-using System;
using osu.Framework.Allocation;
using osu.Framework.Bindables;
using osu.Framework.Graphics;