public static void LoadGameScene(string sceneName = null, bool forceReload = false) { if (sceneName == null) { sceneName = SceneUtil.currentScene.name; } List <SceneTypes> toLookup = new List <SceneTypes> { SceneTypes.Menu }; if (SceneUtil.menuSceneNames.Contains(sceneName)) { if (SceneUtil.isInMultiplayer) { toLookup.Insert(0, SceneTypes.MultiplayerMenu); } } else if (sceneName == "GameCore") { toLookup.Insert(0, SceneTypes.Playing); if (HookLeveldata.isModdedMap) { toLookup.Insert(0, SceneTypes.PlayingModmap); } else if (HookLeveldata.is360Level) { toLookup.Insert(0, SceneTypes.Playing360); } if (ScoresaberUtil.IsInReplay()) { toLookup.Insert(0, SceneTypes.Replay); } else if (SceneUtil.isInMultiplayer) { toLookup.Insert(0, SceneTypes.PlayingMulti); if (HookMultiplayerSpectatorController.instance != null) { toLookup.Insert(0, SceneTypes.SpectatingMulti); } } } if (HookFPFCToggle.isInFPFC) { toLookup.Insert(0, SceneTypes.FPFC); } #if DEBUG Plugin.Log.Info($"LoadGameScene -> {string.Join(", ", toLookup)}"); #endif SwitchToScene(FindSceneToUse(toLookup.ToArray()), forceReload); }
public void OnApplicationStart() { harmony = new Harmony("Kinsi55.BeatSaber.Cam2"); harmony.PatchAll(Assembly.GetExecutingAssembly()); MovementScriptManager.LoadMovementScripts(); GlobalFPSCap.Init(); SceneManager.activeSceneChanged += SceneUtil.OnActiveSceneChanged; // Marinate the Reflection stuff off-thread so the loading of cameras later is less blocking Task.Run(() => { ModmapExtensions.Reflect(); ScoresaberUtil.Reflect(); CustomNotesUtil.Reflect(); }); }