mirror of
https://github.com/ppy/osu.git
synced 2025-02-21 20:12:57 +08:00
Fix timeline not updating ticks correctly after arbitrary timing control point changes
This commit is contained in:
parent
6b79d96517
commit
190c6ef45e
@ -25,6 +25,9 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline
|
|||||||
[Resolved]
|
[Resolved]
|
||||||
private BindableBeatDivisor beatDivisor { get; set; }
|
private BindableBeatDivisor beatDivisor { get; set; }
|
||||||
|
|
||||||
|
[Resolved]
|
||||||
|
private IEditorChangeHandler changeHandler { get; set; }
|
||||||
|
|
||||||
[Resolved]
|
[Resolved]
|
||||||
private OsuColour colours { get; set; }
|
private OsuColour colours { get; set; }
|
||||||
|
|
||||||
@ -38,7 +41,15 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline
|
|||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
private void load()
|
private void load()
|
||||||
{
|
{
|
||||||
beatDivisor.BindValueChanged(_ => tickCache.Invalidate());
|
beatDivisor.BindValueChanged(_ => invalidateTicks());
|
||||||
|
|
||||||
|
// currently this is the best way to handle any kind of timing changes.
|
||||||
|
changeHandler.OnStateChange += invalidateTicks;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void invalidateTicks()
|
||||||
|
{
|
||||||
|
tickCache.Invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -165,5 +176,13 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline
|
|||||||
return point;
|
return point;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override void Dispose(bool isDisposing)
|
||||||
|
{
|
||||||
|
base.Dispose(isDisposing);
|
||||||
|
|
||||||
|
if (changeHandler != null)
|
||||||
|
changeHandler.OnStateChange -= invalidateTicks;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user