// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using osu.Framework.Graphics.Containers; using osu.Game.Rulesets.Objects.Drawables; using osu.Game.Rulesets.Taiko.Objects.Drawables; using osu.Game.Rulesets.UI.Scrolling; namespace osu.Game.Rulesets.Taiko.UI { internal class DrumRollHitContainer : ScrollingHitObjectContainer { protected override void Update() { base.Update(); // Remove any auxiliary hit notes that were spawned during a drum roll but subsequently rewound. for (var i = AliveInternalChildren.Count - 1; i >= 0; i--) { var flyingHit = (DrawableFlyingHit)AliveInternalChildren[i]; if (Time.Current <= flyingHit.HitObject.StartTime) Remove(flyingHit); } } protected override void OnChildLifetimeBoundaryCrossed(LifetimeBoundaryCrossedEvent e) { base.OnChildLifetimeBoundaryCrossed(e); // ensure all old hits are removed on becoming alive (may miss being in the AliveInternalChildren list above). if (e.Kind == LifetimeBoundaryKind.Start && e.Direction == LifetimeBoundaryCrossingDirection.Backward) Remove((DrawableHitObject)e.Child); } } }