/// <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(); } }); } }