Exemple #1
0
//         #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);
        }
Exemple #2
0
        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);
                    }
                }
            }
        }