コード例 #1
0
ファイル: FormatUtility.cs プロジェクト: BeauPrime/BeauData
        /// <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!");
            }
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
ファイル: FormatUtility.cs プロジェクト: BeauPrime/BeauData
        /// <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);
            }
        }
コード例 #4
0
        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;
                    }
                }
            }
        }
コード例 #5
0
        /// <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);
            }
        }