// 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; using osu.Game.Rulesets.Mania.Objects.Drawables; using osu.Game.Rulesets.Mania.UI; using osu.Game.Rulesets.Objects.Drawables; namespace osu.Game.Rulesets.Mania.Edit { public partial class EditorColumn : Column { public EditorColumn(int index, bool isSpecial) : base(index, isSpecial) { } protected override void OnNewDrawableHitObject(DrawableHitObject drawableHitObject) { base.OnNewDrawableHitObject(drawableHitObject); drawableHitObject.ApplyCustomUpdateState += (dho, state) => { switch (dho) { // hold note heads are exempt from what follows due to the "freezing" mechanic // which already ensures they'll never fade away on their own. case DrawableHoldNoteHead: break; // mania features instantaneous hitobject fade-outs. // this means that without manual intervention stopping the clock at the precise time of hitting the object // means the object will fade out. // this is anti-user in editor contexts, as the user is expecting to continue the see the note on the receptor line. // therefore, apply a crude workaround to prevent it from going away. default: { if (state == ArmedState.Hit) dho.FadeTo(1).Delay(1).FadeOut().Expire(); break; } } }; } } }