private static void SaveAllData() { for (int i = 0; i < SceneManager.sceneCount; i++) { SceneDataRepository.SaveData(SceneManager.GetSceneAt(i)); } }
public static void SaveData(Scene scene) { IDataPersister[] persisters = GetDataPersisters(scene); SceneData sceneData = SceneDataRepository.GetSceneData(scene); foreach (IDataPersister persister in persisters) { DataSettings key = persister.GetDataSettings(); sceneData.Store(key.dataKey, persister.SaveData(), key.persistenceType); } }
public static void LoadLevel(LevelInfo levelInfo) { SaveAllData(); if (CurrantLevel != null && !CurrantLevel.IsGlobal) { SceneDataRepository.DeleteAllLevelData(loadedScenesInLevel.ToArray()); Inventory.DeleteAllLevelData(); } loadedScenesInLevel.Clear(); CurrantLevel = levelInfo; LoadMainSceneRaw(levelInfo.StartScene); }
private static void OnLoadSceneCompleted(MySceneInfo sceneInfo) { if (TryGetActiveScene(sceneInfo, out Scene scene)) { SceneDataRepository.LoadData(scene); loadedScenesInLevel.Add(scene.buildIndex); if (sceneInfo is MainSceneInfo mainSceneInfo && mainSceneInfo.StartCheckpoint != null) { CheckpointManager.SetStartCheckpoint(mainSceneInfo.StartCheckpoint); } } else { Debug.LogError("Something went wrong when loading scene"); } }
public static void LoadData(Scene scene) { IDataPersister[] persisters = GetDataPersisters(scene); SceneData sceneData = SceneDataRepository.GetSceneData(scene); foreach (var data in sceneData.SavedData) { IDataPersister persister = persisters.FirstOrDefault(p => Equals(data.Key, p.GetDataSettings().dataKey)); if (persister == null) { continue; } persister.LoadData(data.Value.Data); } }
public static void UnloadScene(MySceneInfo sceneInfo) { if (sceneInfo == null) { Debug.Log("SceneInfo is null"); return; } if (TryGetActiveScene(sceneInfo, out Scene scene)) { SceneDataRepository.SaveData(scene); GetUnload(scene); } else { Debug.Log("Scene " + sceneInfo.name + " was not loaded"); } }