/// <summary> /// Returns the default file extension for the given format. /// </summary> static public string Extension(this Serializer.Format inFormat) { if (inFormat == Serializer.Format.AutoDetect) { inFormat = Serializer.DefaultWriteFormat; } switch (inFormat) { case Serializer.Format.Binary: return(BinarySerializer.FileExtension); case Serializer.Format.GZIP: return(GZIPSerializer.FileExtension); case Serializer.Format.JSON: return(JSONSerializer.FileExtension); case Serializer.Format.XML: return(XMLSerializer.FileExtension); default: throw new Exception("Unknown format!"); } }
/// <summary> /// Returns the path with the extension for the given format, if an extension was not provided already. /// </summary> static public string CorrectPath(string inFilePath, Serializer.Format inFormat = Serializer.Format.AutoDetect) { // Appends the correct file extension if we haven't provided one if (!Path.HasExtension(inFilePath)) { return(Path.ChangeExtension(inFilePath, inFormat.Extension())); } return(inFilePath); }
/// <summary> /// Returns if the given format is a binary format. /// </summary> static public bool IsBinary(this Serializer.Format inFormat) { switch (inFormat) { case Serializer.Format.Binary: case Serializer.Format.GZIP: return(true); default: return(false); } }
private void ConfigGUI() { using (new EditorGUI.DisabledScope(m_SelectionState.Table == null)) { { bool bFilterSelections = EditorGUILayout.Toggle(EditorGUIUtility.TrTextContent("Filter Selections", "If unchecked, all triggers, queries, and actions will be presented for all entities."), m_FilterSelections); if (bFilterSelections != m_FilterSelections) { m_SelfUndoTarget.MarkDirty("Changed filter mode"); m_FilterSelections = bFilterSelections; } } EditorGUILayout.Space(); using (new GUILayout.HorizontalScope()) { if (GUILayout.Button("Export")) { SaveTable(m_SelectionState.Table, m_SerializationFormat, null); } if (GUILayout.Button("Import")) { RSRuleTableData table = LoadTable(null); if (table != null) { SelectAction(-1); SelectCondition(-1); SelectRule(-1); m_TargetState.UndoTarget.MarkDirty("Reloaded Table", true); m_SelectionState.Table.CopyFrom(table); } } Serializer.Format newFormat = ListGUILayout.Popup(m_SerializationFormat, RSEditorUtility.s_SerializeFormats, GUILayout.Width(60)); if (newFormat != m_SerializationFormat) { m_SelfUndoTarget.MarkDirty("Changed Serialization Format"); m_SerializationFormat = newFormat; } } } }
/// <summary> /// Prompts the user to save a table to disk. /// </summary> static private bool SaveTable(RSRuleTableData inData, Serializer.Format inFormat, string inInitialPath) { string filePath = EditorUtility.SaveFilePanel("Save Rule Table", inInitialPath ?? Application.dataPath, inData.Name, "rule"); if (string.IsNullOrEmpty(filePath)) { return(false); } try { Serializer.WriteFile(inData, filePath, OutputOptions.PrettyPrint, inFormat); return(true); } catch (Exception e) { Debug.LogException(e); EditorUtility.DisplayDialog("Error while writing table", "Exception encountered; see console for details", "Okay"); return(false); } }