mirror of
https://github.com/osukey/osukey.git
synced 2025-07-01 08:20:00 +09:00
Don't add nested hit objects to the sets
Only top-level hit objects are checked for layout computation caching. Also, lifetime of nested hit objects are not managed by the HitObjectContainer.
This commit is contained in:
@ -23,7 +23,7 @@ namespace osu.Game.Rulesets.UI.Scrolling
|
|||||||
private readonly HashSet<DrawableHitObject> toComputeLifetime = new HashSet<DrawableHitObject>();
|
private readonly HashSet<DrawableHitObject> toComputeLifetime = new HashSet<DrawableHitObject>();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A set containing all <see cref="HitObjectContainer.AliveObjects"/> which have an up-to-date layout.
|
/// A set of top-level <see cref="DrawableHitObject"/>s which have an up-to-date layout.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private readonly HashSet<DrawableHitObject> layoutComputed = new HashSet<DrawableHitObject>();
|
private readonly HashSet<DrawableHitObject> layoutComputed = new HashSet<DrawableHitObject>();
|
||||||
|
|
||||||
@ -150,29 +150,18 @@ namespace osu.Game.Rulesets.UI.Scrolling
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnAdd(DrawableHitObject drawableHitObject) => onAddRecursive(drawableHitObject);
|
protected override void OnAdd(DrawableHitObject drawableHitObject)
|
||||||
|
|
||||||
protected override void OnRemove(DrawableHitObject drawableHitObject) => onRemoveRecursive(drawableHitObject);
|
|
||||||
|
|
||||||
private void onAddRecursive(DrawableHitObject hitObject)
|
|
||||||
{
|
{
|
||||||
invalidateHitObject(hitObject);
|
invalidateHitObject(drawableHitObject);
|
||||||
|
drawableHitObject.DefaultsApplied += invalidateHitObject;
|
||||||
hitObject.DefaultsApplied += invalidateHitObject;
|
|
||||||
|
|
||||||
foreach (var nested in hitObject.NestedHitObjects)
|
|
||||||
onAddRecursive(nested);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onRemoveRecursive(DrawableHitObject hitObject)
|
protected override void OnRemove(DrawableHitObject drawableHitObject)
|
||||||
{
|
{
|
||||||
toComputeLifetime.Remove(hitObject);
|
toComputeLifetime.Remove(drawableHitObject);
|
||||||
layoutComputed.Remove(hitObject);
|
layoutComputed.Remove(drawableHitObject);
|
||||||
|
|
||||||
hitObject.DefaultsApplied -= invalidateHitObject;
|
drawableHitObject.DefaultsApplied -= invalidateHitObject;
|
||||||
|
|
||||||
foreach (var nested in hitObject.NestedHitObjects)
|
|
||||||
onRemoveRecursive(nested);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
Reference in New Issue
Block a user