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); } }
private static SceneData GetSceneData(int buildIndex) { if (SceneData.TryGetValue(buildIndex, out SceneData sceneData)) { return(sceneData); } else { SceneData newSceneData = new SceneData(); SceneData.Add(buildIndex, newSceneData); return(newSceneData); } }
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); } }