mirror of
https://github.com/ppy/osu.git
synced 2025-01-12 17:43:05 +08:00
Bring back scheduling of follow point update
This commit is contained in:
parent
0098ac2760
commit
d7da66d876
@ -2,7 +2,6 @@
|
||||
// See the LICENCE file in the repository root for full licence text.
|
||||
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using osu.Framework.Graphics;
|
||||
using osu.Framework.Graphics.Pooling;
|
||||
using osu.Game.Rulesets.Objects;
|
||||
@ -26,26 +25,30 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Connections
|
||||
{
|
||||
base.OnApply(entry);
|
||||
|
||||
entry.Invalidated += refreshPoints;
|
||||
refreshPoints(entry);
|
||||
entry.Invalidated += onEntryInvalidated;
|
||||
refreshPoints();
|
||||
}
|
||||
|
||||
protected override void OnFree(FollowPointLifetimeEntry entry)
|
||||
{
|
||||
base.OnFree(entry);
|
||||
|
||||
entry.Invalidated -= refreshPoints;
|
||||
entry.Invalidated -= onEntryInvalidated;
|
||||
// Return points to the pool.
|
||||
ClearInternal(false);
|
||||
}
|
||||
|
||||
private void refreshPoints(FollowPointLifetimeEntry entry)
|
||||
private void onEntryInvalidated() => Scheduler.AddOnce(refreshPoints);
|
||||
|
||||
private void refreshPoints()
|
||||
{
|
||||
ClearInternal(false);
|
||||
|
||||
var entry = Entry;
|
||||
if (entry?.End == null) return;
|
||||
|
||||
OsuHitObject start = entry.Start;
|
||||
OsuHitObject end = entry.End;
|
||||
Debug.Assert(end != null, $"{nameof(FollowPointLifetimeEntry)} without end hit object should never be alive");
|
||||
|
||||
double startTime = start.GetEndTime();
|
||||
|
||||
|
@ -13,7 +13,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Connections
|
||||
{
|
||||
public class FollowPointLifetimeEntry : LifetimeEntry
|
||||
{
|
||||
public event Action<FollowPointLifetimeEntry>? Invalidated;
|
||||
public event Action? Invalidated;
|
||||
public readonly OsuHitObject Start;
|
||||
|
||||
public FollowPointLifetimeEntry(OsuHitObject start)
|
||||
@ -91,7 +91,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Connections
|
||||
LifetimeStart = fadeInTime;
|
||||
LifetimeEnd = double.MaxValue; // This will be set by the connection.
|
||||
|
||||
Invalidated?.Invoke(this);
|
||||
Invalidated?.Invoke();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user