mirror of
https://github.com/ppy/osu.git
synced 2025-01-12 18:23:04 +08:00
Add lifetime extensions
This commit is contained in:
parent
243e913e4a
commit
8aaa500431
@ -58,6 +58,16 @@ namespace osu.Game.Rulesets.UI
|
|||||||
/// </remarks>
|
/// </remarks>
|
||||||
public event Action<HitObject> HitObjectUsageFinished;
|
public event Action<HitObject> HitObjectUsageFinished;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The amount of time prior to the current time within which <see cref="HitObject"/>s should be considered alive.
|
||||||
|
/// </summary>
|
||||||
|
public double PastLifetimeExtension { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The amount of time after the current time within which <see cref="HitObject"/>s should be considered alive.
|
||||||
|
/// </summary>
|
||||||
|
public double FutureLifetimeExtension { get; set; }
|
||||||
|
|
||||||
private readonly Dictionary<DrawableHitObject, IBindable> startTimeMap = new Dictionary<DrawableHitObject, IBindable>();
|
private readonly Dictionary<DrawableHitObject, IBindable> startTimeMap = new Dictionary<DrawableHitObject, IBindable>();
|
||||||
private readonly Dictionary<HitObjectLifetimeEntry, DrawableHitObject> drawableMap = new Dictionary<HitObjectLifetimeEntry, DrawableHitObject>();
|
private readonly Dictionary<HitObjectLifetimeEntry, DrawableHitObject> drawableMap = new Dictionary<HitObjectLifetimeEntry, DrawableHitObject>();
|
||||||
private readonly LifetimeEntryManager lifetimeManager = new LifetimeEntryManager();
|
private readonly LifetimeEntryManager lifetimeManager = new LifetimeEntryManager();
|
||||||
@ -179,7 +189,7 @@ namespace osu.Game.Rulesets.UI
|
|||||||
protected override bool CheckChildrenLife()
|
protected override bool CheckChildrenLife()
|
||||||
{
|
{
|
||||||
bool aliveChanged = base.CheckChildrenLife();
|
bool aliveChanged = base.CheckChildrenLife();
|
||||||
aliveChanged |= lifetimeManager.Update(Time.Current, Time.Current);
|
aliveChanged |= lifetimeManager.Update(Time.Current - PastLifetimeExtension, Time.Current + FutureLifetimeExtension);
|
||||||
return aliveChanged;
|
return aliveChanged;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -240,6 +240,42 @@ namespace osu.Game.Rulesets.UI
|
|||||||
p.KeepAllAlive();
|
p.KeepAllAlive();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The amount of time prior to the current time within which <see cref="HitObject"/>s should be considered alive.
|
||||||
|
/// </summary>
|
||||||
|
public double PastLifetimeExtension
|
||||||
|
{
|
||||||
|
get => HitObjectContainer.PastLifetimeExtension;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
HitObjectContainer.PastLifetimeExtension = value;
|
||||||
|
|
||||||
|
if (!nestedPlayfields.IsValueCreated)
|
||||||
|
return;
|
||||||
|
|
||||||
|
foreach (var nested in nestedPlayfields.Value)
|
||||||
|
nested.PastLifetimeExtension = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The amount of time after the current time within which <see cref="HitObject"/>s should be considered alive.
|
||||||
|
/// </summary>
|
||||||
|
public double FutureLifetimeExtension
|
||||||
|
{
|
||||||
|
get => HitObjectContainer.FutureLifetimeExtension;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
HitObjectContainer.FutureLifetimeExtension = value;
|
||||||
|
|
||||||
|
if (!nestedPlayfields.IsValueCreated)
|
||||||
|
return;
|
||||||
|
|
||||||
|
foreach (var nested in nestedPlayfields.Value)
|
||||||
|
nested.FutureLifetimeExtension = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The cursor currently being used by this <see cref="Playfield"/>. May be null if no cursor is provided.
|
/// The cursor currently being used by this <see cref="Playfield"/>. May be null if no cursor is provided.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
Loading…
Reference in New Issue
Block a user