示例#1
0
        /// <summary>
        ///     Called whenever an editor layer has been updated.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OnEditorLayerUpdated(object sender, EditorLayerUpdatedEventArgs e)
        {
            var hitObjects = HitObjects.FindAll(x => x.Info.EditorLayer == e.Index);

            if (!e.Type.HasFlag(EditorLayerUpdateType.Visibility) && !e.Type.HasFlag(EditorLayerUpdateType.Color))
            {
                return;
            }

            if (e.Layer.Hidden)
            {
                hitObjects.ForEach(x =>
                {
                    if (Ruleset.SelectedHitObjects.Contains(x))
                    {
                        x.AppearAsSelected();
                    }
                    else if (Ruleset.PendingLongNoteReleases.Contains(x.Info))
                    {
                        var h = x as DrawableEditorHitObjectLong;
                        h?.AppearAsInactive();
                    }
                    else
                    {
                        x.AppearAsHiddenInLayer();
                    }
                });
            }
            else
            {
                hitObjects.ForEach(x =>
                {
                    if (Ruleset.SelectedHitObjects.Contains(x))
                    {
                        x.AppearAsSelected();
                    }
                    else if (Ruleset.PendingLongNoteReleases.Contains(x.Info))
                    {
                        var h = x as DrawableEditorHitObjectLong;
                        h?.AppearAsInactive();
                    }
                    else
                    {
                        x.AppearAsActive();
                    }
                });
            }
        }