// other options to alter to change scenes public bool RequestSceneChange(GameScenes nextScene, float delay = 0) { if (this.sceneChangeInProgress == null) { if (nextScene.ToString() == SceneManager.GetActiveScene().name) { //Debug.Log("Already on the scene."); return(false); } string match = nextScene.ToString(); string scene = scenes.FirstOrDefault(z => { return(z == match); }); if (String.IsNullOrEmpty(scene)) { //ERROR: SceneNotFound return(false); } // TODO: // check if already loading another scene // check if scene is already loaded // check if any delay parameters // check logic for adding a between scene sceneChangeInProgress = StartCoroutine(ChangeScene(match, delay)); //this.activeScene = nextScene; return(true); } else { // already loading a scene... return(false); } }
//void RotateGizmoSpawnedSpawned(AltimeterSliderButtons asb) { // Log.Info ("RotateGizmoSpawnedSpawned"); //} void CallbackLevelWasLoaded(GameScenes scene) { Log.Info("KRASHShelter CallbackLevelWasLoaded"); //[KSPScenario(ScenarioCreationOptions.AddToNewGames, new[] { GameScenes.FLIGHT, GameScenes.TRACKSTATION, GameScenes.SPACECENTER })] if (scene == GameScenes.FLIGHT || scene == GameScenes.TRACKSTATION || scene == GameScenes.SPACECENTER) { KRASHPersistent.initialize(); Log.Info("CallbackLevelWasLoaded loaded for " + scene.ToString()); } else { Log.Info("No call at CallbackLevelWasLoaded for " + scene.ToString()); } }
private string GetDesc() { switch (scene) { case GameScenes.LOADING: return("Loading"); case GameScenes.LOADINGBUFFER: return("Loading Game"); case GameScenes.MAINMENU: return("In the Main Menu"); case GameScenes.SETTINGS: return("Configuring their game"); case GameScenes.SPACECENTER: return("At the KSC"); case GameScenes.TRACKSTATION: return("In the Tracking Station"); case GameScenes.CREDITS: return("Watching the Credits"); case GameScenes.MISSIONBUILDER: return("Creating a mission"); } return(scene.ToString()); }
/// <summary> /// Game scene loaded event /// </summary> /// <param name="scene">Loaded scene</param> /// <param name="mode">Load mode</param> private void OnSceneLoaded(Scene scene, LoadSceneMode mode) { GameScenes loadedScene = (GameScenes)scene.buildIndex; switch (loadedScene) { case GameScenes.MENU: CurrentGame = null; Mode = GameMode.NONE; this.source.clip = this.menuMusic; this.source.Play(); break; case GameScenes.GAME: CurrentGame = FindObjectOfType <Game>(); if (CurrentScene != GameScenes.GAME) { this.source.clip = this.gameMusic; this.source.Play(); } break; } this.Log($"Scene loaded - {ToCamelCase(loadedScene.ToString())}"); CurrentScene = loadedScene; }
/// <summary> /// シーン遷移を実行する /// </summary> /// <param name="nextScene">次のシーン</param> /// <param name="data">次のシーンへ引き継ぐデータ</param> /// <param name="additiveLoadScenes">追加ロードするシーン</param> public async Task Move(GameScenes nextScene, SceneDataPack data, GameScenes[] additiveLoadScenes) { SceneLoader.PreviousSceneData = data; CurrentGameScene = nextScene; //画面をトランジションエフェクトで隠す await _transitionImageController.CloseTransition(); //シーン遷移 await SceneManager.LoadSceneAsync(nextScene.ToString(), LoadSceneMode.Single); //追加シーンがある場合は一緒に読み込む if (additiveLoadScenes != null) { await Task.WhenAll(additiveLoadScenes.Select(scene => SceneManager.LoadSceneAsync(scene.ToString(), LoadSceneMode.Additive).AsObservable().ToTask())); } // 未使用アセットすべて開放 await Resources.UnloadUnusedAssets(); // GC実行 GC.Collect(); // 画面を戻す await _transitionImageController.OpenTransition(); }
static string SafeLoad(string value, GameScenes oldvalue) { if (value == null) { return(oldvalue.ToString()); } return(value); }
public DefinedErrors ChangeScene(GameScenes next) { SceneManager.LoadScene(next.ToString()); DataManager.PrevScene = DataManager.CurrentScene; DataManager.CurrentScene = next; return DefinedErrors.Pass; }
private IEnumerator TransitionCoroutine( GameScenes nextScene, SceneDataPack data, GameScenes[] additiveLoadScenes, bool autoMove ) { ToMoveFlag.Value = autoMove; _isTransitioning.Value = true; while (transitionComponent == null) { yield return(new WaitForSeconds(0.2f)); transitionComponent.threshold = 0; } //タッチイベントを吸収させる image.raycastTarget = true; transitionComponent.flip = false; transitionComponent.Play(); yield return(onTransactionFinishedInternal.FirstOrDefault().StartAsCoroutine()); transitionComponent.threshold = 1; SceneLoader.PreviousSceneData = data; //シーン遷移 yield return(SceneManager.LoadSceneAsync(nextScene.ToString(), LoadSceneMode.Single)); //追加シーンがある場合は一緒に読み込む if (additiveLoadScenes != null) { yield return(additiveLoadScenes.Select(scene => SceneManager.LoadSceneAsync(scene.ToString(), LoadSceneMode.Additive) .ObserveEveryValueChanged(x => x.isDone) .FirstOrDefault(x => x) ).WhenAll().StartAsCoroutine()); } Resources.UnloadUnusedAssets(); GC.Collect(); onAllSceneLoaded.OnNext(Unit.Default); if (!autoMove) { //自動遷移しないなら待機 yield return(ToMoveFlag.FirstOrDefault(x => x).StartAsCoroutine()); } ToMoveFlag.Value = false; //反転 transitionComponent.Play(); yield return(onTransactionFinishedInternal.FirstOrDefault().StartAsCoroutine()); image.raycastTarget = false; transitionComponent.threshold = 0; onTransitionAnimationFinishedSubject.OnNext(Unit.Default); _isTransitioning.Value = false; }
public static bool GameSceneIsMissionBuilder(GameScenes scene) { if (Versioning.version_major * 100 + Versioning.version_minor < 104) { // Below KSP 1.4.0 return(false); } // KSP 1.4.0 and up return(scene.ToString() == "MISSIONBUILDER"); }
public GUIWindowSettings(GameScenes pGS, float pX, float pY, bool pIsDisplayed) { scene = pGS; x = pX; y = pY; isDisplayed = pIsDisplayed; cn = new ConfigNode(pGS.ToString()); cn.SetValue(nameof(X), x, true); cn.SetValue(nameof(Y), y, true); cn.SetValue(nameof(IsDisplayed), isDisplayed, true); }
/// <summary> /// Load's a given scene after unloading the previous one /// </summary> /// <param name="scene"></param> public void LoadScene(GameScenes scene) { loadScene = scene; if (activeScene != GameScenes.Controller) { SceneManager.UnloadSceneAsync((int)activeScene); Debug.Log("[SceneController] Unload scene: " + activeScene.ToString()); } SceneManager.LoadScene((int)loadScene, LoadSceneMode.Additive); Debug.Log("[SceneController] Load scene: " + scene.ToString()); //coz we dont use eventhandlers: ChangeActiveScene(); }
public void LateUpdate() { try { if (HighLogic.LoadedScene != _lastScene) { _lastScene = HighLogic.LoadedScene; Util.Log("Saw scene switch to {0}", _lastScene.ToString()); } _expController.Update(); } catch (Exception ex) { Util.Log("{0}: {1}\n{2}", ex.GetType(), ex.Message, ex.StackTrace); } }
void onGameSceneLoadRequestedForAppLauncher(GameScenes SceneToLoad) { if (DistantObjectSettings.debugMode) { Debug.Log(Constants.DistantObject + " -- onGameSceneLoadRequestedForAppLauncher: " + SceneToLoad.ToString() + " - " + this.GetInstanceID() + " AppLauncher.Ready = " + ApplicationLauncher.Ready.ToString()); } }
/// <summary> /// Set's the loaded scene as active scene /// </summary> /// <param name="scene"></param> private void ChangeActiveScene() { activeScene = loadScene; //EventHandler.Instance.TriggerEvent(GameEvent.ActiveSceneChanged); Debug.Log("[SceneController] Active scene: " + activeScene.ToString()); }
internal static string GetUniqueKey(GameScenes scene, string buttonObjectName) { return(scene.ToString() + ":" + buttonObjectName); }
void OnLevelWasLoaded(int level) { GameScenes scene = (GameScenes)level; KSPAddonImproved.Startup mask = 0; if (scene == GameScenes.LOADINGBUFFER) { return; } Debug.Log(string.Format("{1}: {0} was loaded; instantiating addons...", scene.ToString(), _identifier)); // Convert GameScenes => SceneMask switch (scene) { case GameScenes.EDITOR: mask = KSPAddonImproved.Startup.EditorVAB | KSPAddonImproved.Startup.EditorSPH; break; case GameScenes.CREDITS: mask = KSPAddonImproved.Startup.Credits; break; case GameScenes.FLIGHT: mask = KSPAddonImproved.Startup.Flight; break; case GameScenes.LOADING: mask = KSPAddonImproved.Startup.Instantly; break; case GameScenes.MAINMENU: mask = KSPAddonImproved.Startup.MainMenu; break; case GameScenes.SETTINGS: mask = KSPAddonImproved.Startup.Settings; break; case GameScenes.SPACECENTER: mask = KSPAddonImproved.Startup.SpaceCenter; break; case GameScenes.TRACKSTATION: mask = KSPAddonImproved.Startup.TrackingStation; break; case GameScenes.PSYSTEM: mask = KSPAddonImproved.Startup.PSystemSpawn; break; case GameScenes.LOADINGBUFFER: // intentionally left unset break; default: Debug.LogError(string.Format("{1} unrecognized scene: {0}", scene.ToString(), _identifier)); break; } int counter = 0; for (int i = 0; i < addons.Count; ++i) { var addon = addons[i]; if (addon.created && addon.RunOnce) { continue; // this addon was already loaded } // should this addon be initialized in current scene? if ((addon.Scenes & mask) != 0) { Debug.Log(string.Format("ImprovedAddonLoader: Creating addon '{0}'", addon.type.Name)); GameObject go = new GameObject(addon.type.Name); go.AddComponent(addon.type); addon.created = true; ++counter; } } Debug.Log(string.Format("{1} finished; created {0} addons", counter, _identifier)); }
public void ChangeScene(GameScenes scene) { SceneManager.LoadScene(scene.ToString()); }
/*************************************************************************************************************************/ public void scene_change_handler(GameScenes input_scene) { Log.PushStackInfo("FMRS_Core.scene_change_handler", "enter scene_change_handler(GameScenes input_scene) " + input_scene.ToString()); Log.dbg("scene_change_handler"); if (input_scene != GameScenes.FLIGHT) { Log.dbg("switch to not flight scene"); if (_SAVE_Kick_To_Main) { return; } Log.dbg("has not recovered"); if (_SAVE_Switched_To_Dropped) { Log.dbg("scene change while flying dropped, kick to main in space center and tracking station"); set_recoverd_value("warning", "FMRS Info:", "You have switched scenes, while controlling a dropped vessel.@Next time, please use the 'Jump back to Main Mission' button, before switching scenes."); _SAVE_Kick_To_Main = true; _SAVE_Switched_To_Dropped = false; save_landed_vessel(true, false); } else { _SETTING_Enabled = false; } } Log.PopStackInfo("leave scene_change_handler(GameScenes input_scene)"); }
public static void LoadScene(GameScenes scene) { Debug.Log("Load Scene"); SceneManager.LoadScene(scene.ToString()); }
internal void loadSettings(ConfigNode parentNode, GameScenes scene) { // hide these WindowList.Instance.destroyDialogs(); dropdownMenu = null; // deactivate these rectLocked = true; buttonOrderLocked = true; draggable.Enabled = false; resizable.Enabled = false; // pretend we're not auto-hidden right now displayMode = DisplayMode.VISIBLE; // enable ourselves Enabled = true; // hide folders foreach (Toolbar folder in folders.Values) { folder.Visible = false; } // pretend that nothing was visible until now visibleButtonIds.Clear(); if (parentNode.HasNode("toolbar")) { foreach (Toolbar folder in new List<Toolbar>(folders.Values)) { removeFolder(folder); } savedFolderSettings.Clear(); ConfigNode toolbarNode = parentNode.GetNode("toolbar"); ConfigNode settingsNode = toolbarNode.HasNode(scene.ToString()) ? toolbarNode.GetNode(scene.ToString()) : toolbarNode; rect.x = settingsNode.get("x", DEFAULT_X); rect.y = settingsNode.get("y", DEFAULT_Y); rect.width = settingsNode.get("width", DEFAULT_WIDTH); rect.height = settingsNode.get("height", 0f); autoHide = settingsNode.get("autoHide", false); showBorder = settingsNode.get("drawBorder", true); UseKSPSkin = settingsNode.get("useKSPSkin", false); savedButtonOrder = settingsNode.get("buttonOrder", "").Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(); savedVisibleButtons = new HashSet<string>(settingsNode.get("visibleButtons", "").Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)); if (settingsNode.HasNode("folders")) { foreach (ConfigNode folderNode in settingsNode.GetNode("folders").nodes) { string folderId = folderNode.name; string toolTip = folderNode.get("toolTip", ""); HashSet<string> buttonIds = new HashSet<string>(folderNode.get("buttons", "").Split(new char[] { ',' })); Toolbar folder = createFolder(folderId, toolTip, false); savedFolderSettings[folderId].buttons = buttonIds; } } // show/hide buttons according to saved settings foreach (Button button in buttons.Where(b => (b.ns != Button.NAMESPACE_INTERNAL) && !b.Equals(dropdownMenuButton))) { button.UserVisible = savedVisibleButtons.Contains(button.ns + "." + button.id); } // move existing buttons according to saved folder contents foreach (Button button in new List<Button>(buttons)) { string buttonId = button.ns + "." + button.id; string folderId = savedFolderSettings.SingleOrDefault(kv => kv.Value.buttons.Contains(buttonId)).Key; if (folderId != null) { moveButtonToFolder(button, folders[folderId]); } } } savedMaxWidth = rect.width; sortButtons(buttons, compareButtonsUserOrder); }
internal void saveSettings(ConfigNode parentNode, GameScenes scene) { ConfigNode toolbarNode = parentNode.getOrCreateNode("toolbar"); ConfigNode settingsNode = toolbarNode.getOrCreateNode(scene.ToString()); settingsNode.overwrite("x", rect.x.ToString("F0")); settingsNode.overwrite("y", rect.y.ToString("F0")); settingsNode.overwrite("width", savedMaxWidth.ToString("F0")); settingsNode.overwrite("height", rect.height.ToString("F0")); settingsNode.overwrite("autoHide", autoHide.ToString()); settingsNode.overwrite("drawBorder", showBorder.ToString()); settingsNode.overwrite("useKSPSkin", UseKSPSkin.ToString()); settingsNode.overwrite("buttonOrder", string.Join(",", savedButtonOrder.ToArray())); settingsNode.overwrite("visibleButtons", string.Join(",", savedVisibleButtons.ToArray())); ConfigNode foldersNode = settingsNode.overwriteNode("folders"); foreach (KeyValuePair<string, FolderSettings> entry in savedFolderSettings) { ConfigNode folderNode = foldersNode.getOrCreateNode(entry.Key); folderNode.overwrite("toolTip", entry.Value.toolTip ?? ""); folderNode.overwrite("buttons", string.Join(",", entry.Value.buttons.ToArray())); } if (foldersNode.CountNodes == 0) { settingsNode.RemoveNode("folders"); } }
public string GetScene(GameScenes scene) { // just convert scene type to a string and return it // to make it easier the GameScenes enum string is the scene name return(scene.ToString()); }
private void logSceneSwitch(GameScenes scene) { if (Tw != null) { Tw.WriteLine(DateTime.Now.ToString("HH:mm:ss tt") + " [KSP] ==== Scene Switch to " + scene.ToString() + " ! ===="); } }