Rewrite storyboard clock management in slightly different way

This commit is contained in:
Bartłomiej Dach 2022-01-11 22:00:04 +01:00
parent 970e0cc85a
commit 76d5225bb9
No known key found for this signature in database
GPG Key ID: BCECCD4FA41F6497
1 changed files with 8 additions and 3 deletions

View File

@ -15,7 +15,7 @@ namespace osu.Game.Graphics.Backgrounds
{
public class BeatmapBackgroundWithStoryboard : BeatmapBackground
{
private InterpolatingFramedClock storyboardClock = null!;
private readonly InterpolatingFramedClock storyboardClock;
[Resolved(CanBeNull = true)]
private MusicController? musicController { get; set; }
@ -23,6 +23,7 @@ public class BeatmapBackgroundWithStoryboard : BeatmapBackground
public BeatmapBackgroundWithStoryboard(WorkingBeatmap beatmap, string fallbackTextureName = "Backgrounds/bg1")
: base(beatmap, fallbackTextureName)
{
storyboardClock = new InterpolatingFramedClock();
}
[BackgroundDependencyLoader]
@ -38,7 +39,7 @@ private void load()
{
RelativeSizeAxes = Axes.Both,
Volume = { Value = 0 },
Child = new DrawableStoryboard(Beatmap.Storyboard) { Clock = storyboardClock = new InterpolatingFramedClock(Beatmap.Track) }
Child = new DrawableStoryboard(Beatmap.Storyboard) { Clock = storyboardClock }
}, AddInternal);
}
@ -47,9 +48,13 @@ protected override void LoadComplete()
base.LoadComplete();
if (musicController != null)
musicController.TrackChanged += onTrackChanged;
updateStoryboardClockSource(Beatmap);
}
private void onTrackChanged(WorkingBeatmap newBeatmap, TrackChangeDirection _)
private void onTrackChanged(WorkingBeatmap newBeatmap, TrackChangeDirection _) => updateStoryboardClockSource(newBeatmap);
private void updateStoryboardClockSource(WorkingBeatmap newBeatmap)
{
if (newBeatmap != Beatmap)
return;