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 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); }
private void OnLevelLoading(object sender, LevelSavingLoadingArgs e) { loadingLevel = true; }