public virtual LevelEditorSaveData LoadLevel(string path) { loadLocation = path; LevelEditorSaveData data; if (!File.Exists(path)) { Debug.LogError($"There's no file with path '{path}'."); return(new LevelEditorSaveData()); } switch (levelFormat) { case FormatType.JSON: data = LevelEditorSerializer.DeserializeJson <LevelEditorSaveData>(File.ReadAllText(path)); break; case FormatType.Binary: data = LevelEditorSerializer.DeserializeBinary <LevelEditorSaveData>(File.ReadAllBytes(path), compress); break; default: data = new LevelEditorSaveData(); break; } return(LoadLevel(data)); }
public void CreateObjectsFromSaveData(LevelEditorSaveData data) { if (data.objects != null && data.objects.Count > 0) { ILevelEditorObject[] savedObjects = new ILevelEditorObject[data.objects.Count]; for (int i = 0; i < data.objects.Count; i++) { ILevelEditorObject obj = this.CreateObject(data.objects[i]); savedObjects[i] = obj; } Assert.AreEqual(data.objects.Count, savedObjects.Length); for (int i = 0; i < savedObjects.Length; i++) { LevelEditorComponentData[] components = data.objects[i].components; if (savedObjects[i] == null) { continue; } savedObjects[i].ApplyExposedData(components); OnCreatedObjectFromSaveData?.Invoke(this, new LevelEditorObjectEvent(savedObjects[i])); } } }
public virtual void SaveLevel(LevelEditorSaveData saveData, string path) { string saveFolder = Path.GetDirectoryName(path); if (!Directory.Exists(saveFolder)) { Directory.CreateDirectory(saveFolder); } LevelSavingLoadingArgs args = new LevelSavingLoadingArgs(saveData, path); OnLevelSaving?.Invoke(this, args); if (args.Cancel) { LevelEditorLogger.Log("LevelEditorSaveManager saving was canceled."); return; } saveData.customData = args.GetAllCustomData(); switch (levelFormat) { case FormatType.JSON: string json = LevelEditorSerializer.SerializeJson(saveData); File.WriteAllText(path, json); break; case FormatType.Binary: byte[] bytes = LevelEditorSerializer.SerializeBinary(saveData, compress); File.WriteAllBytes(path, bytes); break; } OnLevelSaved?.Invoke(this, new LevelEventArgs(saveData)); }
public virtual LevelEditorSaveData GetLevelData(string levelName) { LevelEditorSaveData data = new LevelEditorSaveData(levelName); List <ILevelEditorObject> objects = realObjectManager.GetAllObjects(); objects.Sort((x, y) => x.MyGameObject.transform.GetSiblingIndex().CompareTo(y.MyGameObject.transform.GetSiblingIndex())); for (int i = 0; i < objects.Count; i++) { data.objects.Add(new LevelEditorObjectData(objects[i])); } return(data); }
public virtual LevelEditorSaveData LoadLevel(LevelEditorSaveData data) { LevelSavingLoadingArgs args = new LevelSavingLoadingArgs(data, loadLocation); loadLocation = null; OnLevelLoading?.Invoke(this, args); if (args.Cancel) { LevelEditorLogger.Log("LevelEditorSaveManager loading was canceled."); return(new LevelEditorSaveData(null)); } realObjectManager.DeleteAllObjects(); realObjectManager.CreateObjectsFromSaveData(data); OnLevelLoaded?.Invoke(this, new LevelEventArgs(data)); return(data); }
public virtual LevelEditorSaveData LoadLevelFromJson(string json) { LevelEditorSaveData data = LevelEditorSerializer.DeserializeJson <LevelEditorSaveData>(json); return(LoadLevel(data)); }
public virtual LevelEditorSaveData LoadLevelFromBytes(byte[] levelBytes) { LevelEditorSaveData data = LevelEditorSerializer.DeserializeBinary <LevelEditorSaveData>(levelBytes, compress); return(LoadLevel(data)); }
public virtual void SaveLevel(LevelEditorSaveData saveData) { SaveLevel(saveData, BuildSavePath(baseSaveLocation, saveSuffix, saveData.name, fileExtension)); }
public virtual void SaveLevel(string levelName) { LevelEditorSaveData data = GetLevelData(levelName); SaveLevel(data, BuildSavePath(baseSaveLocation, saveSuffix, levelName, fileExtension)); }
public LevelSavingLoadingArgs(LevelEditorSaveData data, string location) : base(data) { Location = location; }
public LevelEventArgs(LevelEditorSaveData data) { Data = data; customData = data.customData; }