public void FilterButtonPressed() { if (_filterFlowCoordinator == null) { _filterFlowCoordinator = BeatSaberUI.CreateFlowCoordinator <FilterFlowCoordinator>(); _filterFlowCoordinator.name = "FilterFlowCoordinator"; _filterFlowCoordinator.BackButtonPressed += DismissFilterFlowCoordinator; _filterFlowCoordinator.FilterApplied += FilterFlowCoordinatorSetFilteredSongs; _filterFlowCoordinator.FiltersUnapplied += FilterFlowCoordinatorFiltersUnapplied; } if (_lastPack == null) { var levelPack = LevelSelectionNavigationController.GetPrivateField <IBeatmapLevelPack>("_levelPack"); if (levelPack != null && levelPack.packID != FilteredLevelsLevelPack.PackID && !levelPack.packID.Contains(SortedLevelsLevelPack.PackIDSuffix)) { _lastPack = levelPack; Logger.log.Debug($"Storing '{levelPack.packName}' (id = '{levelPack.packID}') level pack as last pack"); } else { var levelCollectionsViewController = Resources.FindObjectsOfTypeAll <AnnotatedBeatmapLevelCollectionsViewController>().FirstOrDefault(); if (levelCollectionsViewController != null) { _lastPack = levelCollectionsViewController.selectedAnnotatedBeatmapLevelCollection; } if (_lastPack == null) { Logger.log.Error("Unable to find currently selected level pack for filtering. Will not display FilterFlowCoordinator"); return; } else { Logger.log.Debug($"Storing '{_lastPack.collectionName}' level collection as last pack"); } } } IPreviewBeatmapLevel[] levels = _lastPack.beatmapLevelCollection.beatmapLevels; _filterFlowCoordinator.Activate(_freePlayFlowCoordinator, levels); if (!ButtonPanel.IsSingletonAvailable || !ButtonPanel.instance.Initialized) { Logger.log.Debug("'Filter' button pressed."); } }