// #region old functions for saving and loading a scene // // //get the dictionary that contains all scenes and put the scene into that dictionary and save // [EasyButtons.Button] // public static void SaveSceneDirectlyToFile(string sceneName) // { // GameData gameData = LoadMostRecentGameFile(); // gameData.dict[sceneName] = GatherSceneSaveData(); // SaveGameFile(gameData); // // Debug.Log("\"" + sceneName + "\" scene was saved"); // } // // [EasyButtons.Button] // public static void SaveCurrentSceneDirectlyToFile() // { // SaveSceneDirectlyToFile(SceneManager.GetActiveScene().name); // } // // // //get save file then find the scene and load that data into the current scenes // [EasyButtons.Button] // public static void LoadSceneDirectlyFromFile(string sceneName) // { // GameData gameData = LoadMostRecentGameFile(); // if (gameData.dict.TryGetValue(sceneName, out SceneData sceneData)) // { // RestoreSceneSaveData(sceneData); // #if UNITY_EDITOR // if (!Application.isPlaying) // EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene()); // Debug.Log("\"" + sceneName + "\" save loaded"); // #endif // } // else // { // Debug.LogWarning("\"" + sceneName + "\" save not found"); // } // } // // [EasyButtons.Button] // public static void LoadCurrentSceneDirectlyFromFile() // { // LoadSceneDirectlyFromFile(SceneManager.GetActiveScene().name); // } // // #endregion #region Current Scenes <-> Dictionary static SceneData GatherSceneSaveData(string sceneName) { var sceneData = new SceneData(); if (Scanner.HasObjectsInScene <SaveableGameObject>(sceneName, out var saveableGameObjects)) { foreach (var saveableGameObject in saveableGameObjects) { sceneData.dict[saveableGameObject.id] = saveableGameObject.GatherComponentsSaveData(); } } return(sceneData); }
static void RestoreSceneSaveData( SceneData sceneData, string sceneName) { // Debug.Log("restoring data for " + sceneName); if (Scanner.HasObjectsInScene <SaveableGameObject>(sceneName, out var saveableGameObjects)) { foreach (var saveableGameObject in saveableGameObjects) { if (sceneData.dict.TryGetValue(saveableGameObject.id, out GameObjectData gameObjectData)) { saveableGameObject.RestoreComponentsSaveData(gameObjectData); } } } }