Пример #1
0
        private IEnumerator Export(Model.Exporter exporter, string filename)
        {
            ProgressBar progress = new ProgressBar("Export", "Please wait during models export.");

            bool success = false;

            IEnumerator it = exporter.Export(rootObject, filename, s => success = s, percentage => progress.Update(percentage));

            while (it.MoveNext())
            {
                yield return(it.Current);
            }

            progress.Stop();

            if (!success)
            {
                EditorUtility.DisplayDialog("Error", string.Format("Export to '{0}' failed.", filename), "OK");
            }
        }
Пример #2
0
        public void OnGUI()
        {
            if (exporter == null)
            {
                exporter = new Model.Exporter();
            }

            if (fileSelector == null)
            {
                fileSelector = new NativeSaverEditor();
            }

            GUILayout.BeginVertical();

            GUILayout.Label("Select the root GameObject to export:");

            rootObject = (GameObject)EditorGUILayout.ObjectField(rootObject, typeof(GameObject), true);

            if (rootObject != null)
            {
                saveAsPrefab = GUILayout.Toggle(saveAsPrefab, "Save as Prefab");

                GUILayout.FlexibleSpace();

                if (GUILayout.Button("Export"))
                {
                    string path = fileSelector.Load();

                    string[] extensions_list = exporter.SupportedExtensions;

                    for (int i = 0; i < extensions_list.Length; i++)
                    {
                        extensions_list[i] = extensions_list[i].Insert(0, "*.");
                    }

                    string extensions = string.Format(";{0}", string.Join(";", extensions_list));

                    if (saveAsPrefab)
                    {
                        extensions = "prefab";
                    }

                    fileSelector.DisplaySelector(path, string.Format("{0}.{1}", rootObject.name, Constants.binaryExtension), extensions);

                    if (fileSelector.Modified && fileSelector.HasFile())
                    {
                        string file = fileSelector.First();

                        if (!string.IsNullOrEmpty(file))
                        {
                            fileSelector.Save();

                            if (saveAsPrefab)
                            {
                                Tools.PrefabExporter prefab = new Tools.PrefabExporter();

                                prefab.Save(rootObject, file);
                            }
                            else
                            {
                                IEnumerator it = Export(exporter, file);

                                while (it.MoveNext())
                                {
                                    ;
                                }
                            }
                        }
                    }
                }
            }

            GUILayout.EndVertical();
        }